jquery datepicker を使用してサーバー コントロールを作成し、render メソッドで初期化します。テキストボックスで、自動ポストバックを設定し、カスタムイベントを追加して、textchanged で起動します。これはサーバー側です。
protected override void CreateChildControls()
{
base.CreateChildControls();
_txtCalender = new TextBox();
_txtCalender.ID = "_txtCalender" + this.ID;
_txtCalender.ReadOnly = true;
_txtCalender.AutoPostBack = true;
_txtCalender.TextChanged += new EventHandler(_txtCalender_TextChanged);
Controls.Add(_txtCalender);
}
//Raised when the select Change
public event EventHandler SelectionDateChanged
{
add
{
Events.AddHandler(eventSelectedChange, value);
}
remove
{
Events.RemoveHandler(eventSelectedChange, value);
}
}
private void _OnSelectedChange(object source, EventArgs e)
{
OnSelectedChange(EventArgs.Empty);
}
//The method that raises the select Change event.
protected void OnSelectedChange(EventArgs e)
{
EventHandler selectedChangeHandler = (EventHandler)Events[eventSelectedChange];
if (selectedChangeHandler != null)
selectedChangeHandler(this, e);
}
クライアント側で、datepicker select プロパティを次のように設定します。
onSelect: function (dateText, inst) {
try {
window.console && console.log($(hiddenFld).val());
inst.input.val($(hiddenFld).val());
inst.input.trigger('change');
}
catch (err) {
alert(err);
}
}
日付を選択するとポストバックが作成されますが、OnTextChanged に取り込まれません。