【问题标题】:checkbox not firing event after checked is set programmatically以编程方式设置检查后复选框未触发事件
【发布时间】:2015-10-02 11:42:30
【问题描述】:

我正在遍历一个字符串并找到一个复选框。我发现复选框没有任何问题,如果迭代的字符等于“t”,我将复选框的 Checked 属性设置为 true。

但是,无论出于何种原因,尽管它确实检查了相应的复选框,但执行此代码也意味着当我自己单击任何复选框时,什么都没有发生(一切正常,在执行此代码之前我可以检查任何内容)。此外,如果我执行此代码,我页面上的提交按钮将不再执行任何操作。我很困惑这可能是什么原因。

这些按钮是在初始化时以编程方式创建的,位于更新面板内。

DateTime date = new DateTime(2015, 11, 18);

foreach (char c in attendee.accommodation)
{
     ID = "accommodationCheckBox" + date.ToShortDateString();
     CheckBox checkbox = (CheckBox)FindControl(ID);
     if (checkbox != null && c == 't')
         {
             checkbox.Checked = true;
         }
     date = date.AddDays(1);
}

这是一个复选框最终看起来如何的示例:https://jsfiddle.net/Lzxo047o/

编辑:场景:您在 A.aspx 上填写动态生成的表单,然后在 B.aspx 上看到“注册概览”。如果你想在那时修改你的注册,你点击一个按钮,创建一个新的 A.aspx 实例,并用数据库中的注册数据填充它,这就是我现在正在解决的问题。我动态地创建了一些复选框并基于字符串的值,无论是否选中它们。它们会按应有的方式进行检查,但我无法手动控制/单击它们。

【问题讨论】:

  • 尝试将复选框的AutoPostBack属性设置为true。
  • 确实是真的
  • 使用 Guid 附加到 id 或递增数字,看看是否有效
  • 我需要能够根据相关日期重建给定复选框的 ID。
  • 我不确定但是,你能在页面加载中再次绑定复选框吗?

标签: asp.net checkbox


【解决方案1】:
checkbox.CheckedChanged += yourcheck_event;

如果复选框是动态创建的,则必须向其中添加事件。

【讨论】:

  • 它确实有一个与它挂钩的 checkedchanged 事件 - 正如我所说,它工作得很好,但是当我执行上面的代码时停止工作。
  • 我可以看看你的前端代码的例子吗?是否所有复选框 ID 都附加了日期?
  • 当然。所有复选框都有 ID,并附有日期。下面是复选框的最终外观示例:jsfiddle.net/Lzxo047o
  • 会不会是您的代码因为多个复选框具有相同的 ID 而无法区分每个复选框?
  • 不,所有 ID 都应该是唯一的,我检查了
【解决方案2】:

确保您的 UpdatePanel 的 UpdateMode 属性设置为“始终”。

考虑一下:

UpdatePanel 控件的内容仅在其中一个时更新 以下是正确的:

当回发是由该 UpdatePanel 控件的触发器引起时。 当您显式调用 UpdatePanel 控件的 Update 方法时。什么时候 UpdatePanel 控件嵌套在另一个 UpdatePanel 控件中 并且父面板已更新。

【讨论】:

  • 将 UpdateMode 设置为始终没有帮助,但我认为该注释是关于主题的。问题是:您在 A.aspx 上填写动态生成的字体,然后您会在 B.aspx 上看到“注册概览”。如果你想在那个时候修改你的注册,你点击一个按钮,它会创建一个新的 A.aspx 实例,并用数据库中的注册数据填充它。我认为这可能与上面的说明有关。
  • 对不起,我说的字体是形式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2021-06-07
  • 1970-01-01
相关资源
最近更新 更多