【发布时间】:2010-11-13 21:44:27
【问题描述】:
我有一个包含内容表的页面,我需要允许用户选择要处理的行。我已经想出了如何在表格中添加一列复选框,但我似乎无法弄清楚如何在提交表单时测试它们是否被选中。如果它们是静态元素,我可以只检查 do this.theCheckBox,但它们是通过程序生成的。
此外,我对如何将数据附加到它们(通过将其填充到 ID 属性中)的方式不太满意。
我不确定它是否相关,但我正在查看一个 catch-22,因为我需要知道在我之前检查了 上次创建的复选框中的哪些可以重新运行创建它们的代码。
编辑:
我找到了一个几乎解决方案。通过设置AutoPostBack 属性和CheckedChanged 事件:
checkbox.AutoPostBack = false;
checkbox.CheckedChanged += new EventHandler(checkbox_CheckedChanged);
对于任何已更改的复选框,我可以在回发时调用代码。然而这有两个问题:
- 在我需要使用此信息的
Page_Load之后(或期间,我不确定)处理回调 - 不会为页面加载时选中的复选框调用回调。
编辑 2:
我最终做的是用已知前缀标记我所有的 ID,并将其填充到 Form_Load 的顶部:
foreach (string v in this.Request.Form.AllKeys)
{
if (v.StartsWith(Prefix))
{
var data = v.Substring(Prefix.Length);
}
}
其他一切似乎都来得太晚了。
【问题讨论】: