我有一个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)
{
}
但它不起作用。
答案 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>