0

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 に取り込まれません。

4

1 に答える 1

2

これは解決しました。それが誰かを助けることができることを願っています、

この行を取り出したとき:

_txtCalender.ReadOnly = true; 

それは機能し、トリガーonSelectを追加する必要はありませんでした。私はちょうど私のjavascriptからそれらの行を削除します:

onSelect: function (dateText, inst) {  
    try {  
        window.console && console.log($(hiddenFld).val());   

        inst.input.val($(hiddenFld).val());   
        inst.input.trigger('change');  

    }  
    catch (err) {  
        alert(err);  
    }  
}  
于 2012-10-10T07:19:31.963 に答える