如何在datalist中找到对dropdownlist的控制

时间:2012-05-22 12:12:08

标签: c# asp.net

我有一个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 个答案:

答案 0 :(得分:1)

SelectedIndexChanged事件最简单的方法是将sender投射到DropDownList

var ddl = (DropDownList)sender;

发件人始终是作为事件来源的控件。

为了完整起见,来自ItemDataBound的{​​{1}}:

DataList

修改:您是否忘记注册活动?

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

请注意,您不应在回发时将DataList绑定到它的DataSource,否则不会触发事件。因此,请检查页面的<asp:DropDownList CssClass="config-select" ID="ddlitem" OnSelectedIndexChanged="ddlitem_selectedindexchanged" runat="server"> </asp:DropDownList> 属性。

例如IsPostBack

page_load

答案 1 :(得分:1)

您已定义服务器端方法:

public void ddlitem_selectedindexchanged (object sender, EventArgs e)
{

}

但你没有告诉客户端有一个事件,所以在HTML代码中告诉它:

 onselectedindexchanged="ddlitem_selectedindexchanged"

并将AutoPostBack属性设置为true。

答案 2 :(得分: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;   
    }

答案 3 :(得分: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>