【发布时间】:2015-06-30 15:48:14
【问题描述】:
我在代码隐藏(在 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 事件绑定在标记中。回发在这里工作得很好。但是,我需要从代码隐藏中创建第二个 CheckBoxList,因为数量取决于数据库中的某些数据。
- 我尝试在 UpdatePanel 中设置 ChildrenAsTriggers="true",以及更改 UpdateMode 和定义触发器,但没有任何运气。
我错过了什么?提前感谢所有提示或建议...!
【问题讨论】:
-
post 你是如何在 Page_Load 中调用这个函数的
-
尝试在!IsPostBack条件下调用该函数
-
是的,我第一次在 !Page.IsPostBack 中调用了这个函数,除了在那里创建的一些其他控件。
-
尝试在条件 !Page.IsPostBack 之外分配事件处理程序
-
我的控件仅在第一次执行页面时调用的函数中创建(因此在 !Page.IsPostBack 中)。您建议在该功能之后我尝试找到那些创建的控件并为它们分配 OnSelectedIndexChanged 事件? (只是要求你做对!)
标签: c# asp.net ajax updatepanel