如何在数据列表中查找下拉列表的控件
本文关键字:查找 下拉列表 控件 列表 数据 | 更新日期: 2023-09-27 18:34:52
我有一个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)
{
}
但它不起作用。
您已经定义了服务器端方法:
public void ddlitem_selectedindexchanged (object sender, EventArgs e)
{
}
但是你没有告诉客户端有一个事件适合你,所以在HTML代码中告诉它:
onselectedindexchanged="ddlitem_selectedindexchanged"
并将"自动回发"属性设置为 true。
从SelectedIndexChanged
事件来看,最简单的方法是将sender
投射到DropDownList
var ddl = (DropDownList)sender;
发送方始终是作为事件源的控件。
为了完整起见,从DataList
ItemDataBound
:
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();
注册事件并设置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;
}
不确定是否无法在服务器上获取所选项目,或者找不到处理事件的方法。如果您的问题与事件处理有关,请尝试此操作
<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>