1

次のように aspx マークアップで宣言するドロップダウンリストがあります。

<asp:DropDownList ID="State" runat="server"></asp:DropDownList>

次に、ページの読み込み時に次のようにバインドします。

protected void Page_Load(object sender, EventArgs e)
    {
       BindDropdowns();
    }
private void BindDropdowns()
    {
        State.DataSource = DataAccess.GetStates();
        State.DataValueField = "FieldId";
        State.DataTextField = "FieldName";
        State.DataBind();
    }

選択した値はポストバック後に保持されず、selectedindexchangedevent も起動できません。どうしたの ?

4

2 に答える 2

5

次のようにコードを変更してください。

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
       BindDropdowns();
}

これは、ドロップダウン コントロールが最初のページ読み込み時に 1 回だけバインドされることを意味します

于 2012-04-30T20:58:40.317 に答える
2

を使用する必要がありAutoPostBack="true"ます。

<asp:DropDownList ID="State" AutoPostBack="true" 
 runat="server"></asp:DropDownList>

また、witch イベント ハンドラーは次のように記述します。

<asp:DropDownList ID="State" AutoPostBack="true" 
OnSelectedIndexChanged="State_SelectedIndexChanged" 
runat="server"></asp:DropDownList>

次にコードで。ポストバックしない場合のみバインド:

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
       BindDropdowns();
}

protected void State_SelectedIndexChanged(object sender, System.EventArgs e)  
{  
    var somevalue= State.SelectedValue;  
} 
于 2012-04-30T21:02:50.880 に答える