1

日付を選択するためのカスタムWebコントロールを作成しました。3つのドロップダウンリストで構成されています。彼らのselectedIndexChangedイベントで、私はこのような日付をチェックします。

    protected void SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddList = sender as DropDownList;
    if (ddlDays.SelectedIndex > 0 && ddlMonths.SelectedIndex > 0 && ddlYears.SelectedIndex > 0)
    {
        int day = ddlDays.SelectedIndex;
        int month = ddlMonths.SelectedIndex;
        int year = int.Parse(ddlMonths.SelectedValue);
        try
        {
            DateTime date = new DateTime(year, month, day);
        }
        catch
        {

            if (OnDateNotValid != null)
                OnDateNotValid("Entered date is not valid");
            //Here I want to invoke PosBack on the page where I use this control
        }
    }
}

私は実際に警告ラベルのテキストをエラーの説明に変更しますが、フォームにポストバックがないため、ラベルは表示されません。ここにいくつかの考慮事項があります:1。itemindexを変更した後に毎回ページをリロードするのは面倒なので、ドロップダウンリストのAutoPostBackプロパティをfalseにしました。2.コントロールにボタンを配置し、そのonbuttonclickイベントを呼び出しようとしましたが、機能しませんでした。

日付が無効であることがコントロールで検出された場合は、ページにポストバックを送信する必要があります。

PS SelectedIndexChgangedメソッドの先頭にブレークポイントを設定し、ドロップダウンリストのいずれかのインデックスを変更すると、デバッガーはそのブレークポイントで停止しません。すべてのドロップダウンリストSelectedIndexChangedイベントをこのメソッドに割り当てました。

4

1 に答える 1

2

あなたはJavaScriptを介してポストバックすることができます

使用する__doPostback('ButtonRenderedId','');

ur AutoPostback="true"javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0) が html でレンダリングされたとき。

javascriptを介して変更されたすべてのインデックスで間接的にページポストバックを意味します。

自動ポストバックが false の場合、手動でポストバックを実行できます。

詳細については、以下をクリックしてください __doPostBack() の使用方法

于 2012-04-09T09:59:06.783 に答える