- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在构建一个页面,其中包含页面上的一些静态组件(下拉列表、按钮、用于容纳它们的表格),但是一个表格单元格充满了可变生成的复选框。按下按钮时,页面代码会计算要放置的复选框并为每个需要的复选框创建一个新的 CheckBox
对象,然后将其添加到页面上的现有 Div 中。
我试图在选中或取消选中其中任何一个时触发一些代码运行,但是 checkBoxName.CheckedChanged += cbCheckedChanged
不工作。我研究并发现了两个建议:启用 View 状态和启用自动回发。
checkBoxName.EnableViewState = true;
似乎没有任何区别,checkBoxName.ViewStateMode = ViewStateMode.Enabled;
或我尝试过的任何变体也没有。 checkBoxName.AutoPostBack = true;
做了一些事情,但不允许它运行我想要的代码。我认为那是因为下一个问题导致它没有达到那个点:
当 AutoPostBack = true
时,每当我选中或取消选中一个框时,cbCheckedChanged
都不会被执行,并且整个页面正在重新加载,重置回其初始状态,因此从表中完全删除复选框。
我该如何解决这些问题,或者至少我应该从哪里着手?
编辑:
这是创建复选框的地方:
CheckBox cb = new CheckBox();
cb.Text = CBName;
cb.EnableViewState = true;
cb.ViewStateMode = ViewStateMode.Enabled;
cb.AutoPostBack = true;
cb.CheckedChanged += CBCheckedChanged;
这就是 CBCheckedChanged 所在的位置:
private void CBCheckedChanged(object sender, EventArgs e)
{
\\Stuff
}
当我使用断点单步执行它时,它永远不会到达 CBCheckedChanged。我已经尝试了在 AutoPostBack、ViewStateMode 和 EnableViewState 行中注释掉和离开的所有可能组合。
Page_Load 当前为空,在用户点击按钮之前不会运行任何内容。
最佳答案
ViewState 默认为服务器端控件启用。您不必修改 ViewState 来解决您的问题。 ViewState 基本上用于在回发发生后恢复控件的状态。例如,将所有条目读取到 ListBox
控件中。这就是为什么大多数控件填充代码都在 Page_Load
方法中的此类构造中。
private void Page_Load()
{
if (!Page.IsPostBack)
{
// populate controls here
}
}
ViewState 是一个容易被误解的概念。有一个great article here详细介绍了它。但正如我所说,对于您的问题 ViewState 不是问题。
解决您的问题:
你的问题是触发按钮正在创建 CheckBox
控件,但是当页面重新加载时,由于这些控件的 CheckedChanged
事件,下一个页面生命周期没有关于在上一个页面生命周期中放置在页面上的 CheckBox
控件的线索。需要为每个页面生命周期生成动态控件!
所以我要做的是创建一个方法:
CheckBox
控件并AutoPostback = true
并且CheckedChanged
设置事件处理程序让我们调用此方法 AddDynamicCheckBoxes()
。现在,当按钮已被按下时,您需要在 Page
的 Page_Load
事件中以及在按钮的单击事件的事件处理程序中调用此方法。你可以这样做:
private void Page_Load()
{
if (ViewState["button_was_clicked"] != null)
{
AddDynamicCheckBoxes();
}
}
private void Button_OnClick()
{
AddDynamicCheckBoxes();
ViewState["button_was_clicked"] = true;
}
关于c# - 如何防止 AutoPostBack 重置我的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068134/
AutoPostBack=True 和 AutoPostBack=False 有什么区别? 最佳答案 取自 http://www.dotnetspider.com/resources/189-Auto
开始之前,我已经看过this question about a very similar topic (以及 this one 和 this one ),没有一个能完全回答我的问题。我已经理解这些问题
我有一个页面,当发生自动或部分回发时,焦点设置到地址栏而不是下一个控件。有趣的是,当我在我的 RadScriptBlock 中放置一个警报时,在单击“确定”之后,焦点会转到正确的控件 - 或者 - 如
我有 3 select输入 form , 代表日期。一个是日,一个是月,一个是年。 这些选择的选项是通过使用 javascript 添加的:例如,如果选择的年份可以被 4 整除并且月份是二月,那么一天
我想在 asp:DropDownList 中选择特定值时显示确认对话框。如果确认对话框返回 false(取消),那么我想阻止 AutoPostBack。 但是,它会忽略 foo() 的返回值并实际执
我有一个 asp.net 页面,上面有许多控件,包括: 带有 autopostback = true 和服务器端 textchanged 事件实现的文本框 实现了服务器端点击事件的按钮 一旦用户离开控
在一个简单的 ASP 页面中,TextBox AutoPostBack 事件将阻止按钮单击事件(除非按钮被快速点击)和其他控件(如 ListBox)的 AutoPostBack 事件。 这里有一个类似
我们在带有 AutoPostBack="true" 的 UpdatePanel 中有两个复选框 单击这些复选框时,将触发 CheckedChanged 事件。一切顺利。 现在,我们有另一个作用于相
我正在构建一个页面,其中包含页面上的一些静态组件(下拉列表、按钮、用于容纳它们的表格),但是一个表格单元格充满了可变生成的复选框。按下按钮时,页面代码会计算要放置的复选框并为每个需要的复选框创建一个新
我有一个带有两个下拉列表的 WebForm,其中第二个的内容取决于第一个。 因此,如果用户更改类别,则第二个下拉列表需要填写子类别列表。 这听起来像是 AutoPostBack 的典型工作。 但是,A
搜索后,我发现了许多建议,但没有一个能解决问题。 在属性窗口中,TextBox (Suggested here) 的 EnableViewState = True。我在 TextBox 中输入一个新
一个 TextBox设置为 AutoPostback因为更改值会导致重新计算和显示许多(仅显示)字段。 这很好用。 但是,当该字段被移出时,焦点会短暂移动到下一个字段,然后在重新绘制页面时消失,因此任
在 jQuery 中,有什么方法可以区分回发下拉列表和非回发下拉列表(ASP.NET 3.5): $('select').change(function(e) { //somethin
我有这段代码可以与用户检查是否可以离开页面而不保存: window.onbeforeunload = !isPostBack && confirmExit; function isPostBack(
我想做this但在 ASP.NET 中。我该如何在 asp.net/背后的代码中编写这个?我已经有了 protected void chkBox_CheckedChanged(object sende
我下载了一个名为“Gentelella-Master Admin”的模板,用于我的 asp.net 应用程序。情况就像我有一个启用了自动回发的下拉列表,当它不活动时,隐藏的 div 会折叠到下拉列表中
是否可以在没有 AutoPostBack=True 的情况下强制下拉列表触发 OnSelectedIndexChanged 事件? 我之所以这么说,是因为我的表单中有一些 RadComboBoxes(
花了一天时间寻找解决方案。但没有成功。我只是想为我的学生创建一个百分比计算表。这是我的 .aspx 代码 $(document).ready(function
因为我什至无法描述问题,所以我不知道如何放置标题,这就是问题所在.. (这只是简单的问题) 假设我有两个复选框设置为 AutoPostBack=True protected void cbPop_Ch
有人可以建议...我无法弄清楚为什么在我更改 ddl 的索引后自动回发不会发生。 请告知我缺少什么?这是标记: 最佳答案 AutoPostBack 对我有用,但您可能想尝试设置 CausesVali
我是一名优秀的程序员,十分优秀!