创建的复选框列表后面的代码不会在UpdatePanel中触发OnSelectedIndexChanged
本文关键字:UpdatePanel OnSelectedIndexChanged 列表 复选框 代码 创建 | 更新日期: 2023-09-27 18:00:28
我在代码隐藏(在Page_Load中)中创建了许多CheckboxList控件,这些控件被放入UpdatePanel中。UpdatePanel是为UpdateMode="always"设置的,所以如果我理解正确,这个UpdatePanel中的每个Postback都应该触发整个UpdatePanel上的Postback(这就是我想要的)。
简化的aspx标记:
<asp:UpdatePanel ID="updatepanel_profiles_manualdata" runat="server">
<ContentTemplate>
<div id="cbl_container" runat="server">
</div>
</ContentTemplate>
</asp:UpdatePanel>
简化代码背后:
protected void create_cbl(){
// this is called in Page_Load
CheckBoxList mycbl = new CheckBoxList();
mycbl.SelectedIndexChanged += new EventHandler(cbl_manual_clickEvent);
DataTable dt3 = get_cbl_data(someparameter);
mycbl.DataSource = dt3;
mycbl.DataTextField = "Title";
mycbl.DataValueField = "ID";
mycbl.AutoPostBack = true;
mycbl.DataBind();
//add the checkboxlist to the container-div in the aspx-markup
cbl_container.Controls.Add(mycbl);
}
protected void cbl_manual_clickEvent(object sender, EventArgs e){
// do something with this click...
}
斗争:
- 我尝试在cbl_manual_clickEvent中设置一个断点,但从未到达,但页面编译时没有出现错误
- 我在同一个UpdatePanel中有另一个CheckBoxList,它在标记中初始化,因此OnSelectedIndex事件绑定在标记中。Postback在这里工作得很好。然而,我需要从代码后面创建第二个CheckBoxList,因为数量取决于数据库中的一些数据
- 我尝试在UpdatePanel中设置ChildrenAsTriggers="true",以及更改UpdateMode和定义触发器,但没有成功
我错过了什么?提前感谢所有提示或建议。。。!
试试这个aspx文件:
<asp:UpdatePanel ID="updatepanel_profiles_manualdata" runat="server">
<ContentTemplate>
<div id="cbl_container" runat="server">
<asp:CheckBoxList ID="CheckBoxList1" AutoPostBack="true" runat="server"></asp:CheckBoxList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
背后的代码
protected void Page_Load(object sender, EventArgs e)
{
CheckBoxList1.SelectedIndexChanged += new EventHandler(cbl_manual_clickEvent);
DataTable dt3 = get_cbl_data(someparameter);
CheckBoxList1.DataSource = dt3;
CheckBoxList1.DataTextField = "Title";
CheckBoxList1.DataValueField = "ID";
CheckBoxList1.AutoPostBack = true;
CheckBoxList1.DataBind();
}
#update1请参阅此答案
您尝试过执行CheckBoxList的AutoPostBack=true
吗?