0

DataList があり、その中に DropDownList があります。

  <asp:DataList ID="dlconfigureItem" runat="server">
    <ItemTemplate>
    <asp:DropDownList CssClass="config-select" ID="ddlitem    runat="server"></asp:DropDownList>
  </ItemTemplate>
  </asp:DataList>

サーバー側で DropDownList の selectedindexchanged イベントを取得するにはどうすればよいですか? 私はこれを試しました:

   public void ddlitem_selectedindexchanged (object sender, EventArgs e)
    {

    }

しかし、それは機能していません。

4

4 に答える 4

1

イベントからSelectedIndexChanged最も簡単なのはにキャストするsenderことですDropDownList

var ddl = (DropDownList)sender;

送信者は常にイベントのソースであるコントロールです。

完全を期すために、ItemDataBoundからDataList

protected void dlconfigureItem_ItemDataBound(object sender, DataListItemEventArgs e) 
{
    DropDownList ddlitem = e.Item.FindControl("ddlitem") as DropDownList;
    if (ddlitem != null)
    {
        // ...
    }
}

編集:イベントの登録を忘れましたか?

<asp:DropDownList CssClass="config-select" 
    ID="ddlitem" 
    OnSelectedIndexChanged="ddlitem_selectedindexchanged"    
    runat="server">
</asp:DropDownList>

ポストバックでDataListをそのデータソースにバインドしないでください。バインドしないと、イベントがトリガーされません。したがって、ページのIsPostBackプロパティを確認してください。

たとえばpage_load

if(!IsPostBack)BindDataList();
于 2012-05-22T12:16:06.910 に答える
1

サーバー側のメソッドを定義しました。

public void ddlitem_selectedindexchanged (object sender, EventArgs e)
{

}

しかし、あなたはあなたのためのイベントがあることをクライアント側に伝えていないので、htmlコードでそれを次のように伝えます:

 onselectedindexchanged="ddlitem_selectedindexchanged"

また、AutoPostBackプロパティをtrueに設定します。

于 2012-05-22T12:21:18.510 に答える
1

イベントを登録して設定するAutoPostBack="true"

<asp:DropDownList CssClass="config-select" 
    ID="ddlitem" 
    AutoPostBack="true"
    OnSelectedIndexChanged="ddlitem_selectedindexchanged"    
    runat="server">
</asp:DropDownList>

イベント (選択したインデックスの変更時に、選択した値を取得できます)

    protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
    {
        var ddlList = (DropDownList)sender;
        string selectedValue = ((DropDownList)ddlList.NamingContainer.FindControl("ddlitem")).SelectedValue;   
    }
于 2012-05-22T13:15:30.950 に答える
0

選択したアイテムをサーバーで取得できないのか、イベントを処理する方法が見つからないのかわからない。イベント処理に問題がある場合は、これを試してください

  <asp:DataList ID="dlconfigureItem" runat="server">
    <ItemTemplate>
    <asp:DropDownList CssClass="config-select" ID="ddlitem" 
       OnSelectedIndexChanged="ddlitem_selectedindexchanged" 
       AutoPostBack="true" runat="server"></asp:DropDownList>
  </ItemTemplate>
  </asp:DataList>
于 2012-05-22T12:16:17.927 に答える