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

注册事件并设置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 回答
1

SelectedIndexChanged事件中最简单的是senderDropDownList

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 绑定到它的 DataSource,否则不会触发事件。所以检查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 回答
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 回答