我有一个ASP.NET网页,其中包含一个复选框和一个按钮表。我需要找到按钮单击发生时检查的所有复选框的ID。收集ID列表后,需要将其传递给服务器。我可以使用jQuery和PageMethods来完成它。
如何在代码隐藏文件中的按钮单击处理程序中实现此目的?即按钮点击发生时检查的所有复选框的ID。
我想在代码隐藏中执行此操作,因为代码隐藏文件包含一些函数,这些函数创建图表并将其导出为PDF,并根据选中的复选框创建图表。
请建议。
欢呼声
答案 0 :(得分:3)
如果您的复选框是服务器控件,那么只需遍历复选框列表项并找到您在Button点击事件中检查的复选框。
如果您的复选框是html控件,那么使用javascript将值放入隐藏的html输入控件,然后在Button click事件中访问此值。
答案 1 :(得分:2)
如果您没有为复选框使用服务器控件或者在运行时动态添加复选框,则可以使用以前答案的替代方法,即迭代作为回发的一部分发送的表单集合。如果选中了复选框,则会将其ID作为其键并且值为“on”添加到此集合中。如果未选中,则不会将其添加到集合中。要使用此方法,您需要确保某种命名约定,以便识别您所使用的复选框ID:
foreach (var key in Request.Form.AllKeys)
{
if (key.EndsWith("checkbox", true, null))
{
// If entry found then this checkbox has been checked
}
}
答案 2 :(得分:1)
首先,我建议您重新考虑为什么要尝试发现在客户端选择了哪些复选框,并将其作为参数传递给表单帖子。为什么不直接在按钮的onclick事件中枚举它们?
其次,假设有一些最终要求这样做,我建议您使用jquery来发现所有选中的复选框,并将其ID存储在隐藏表单字段中的分隔字符串中。我不确定为什么你不得不将这些信息作为按钮点击事件本身的直接参数传递,但不建议这样做。
编辑:一个ASP.NET按钮控件有一个可用于存储它的CommandArgument属性,但它似乎不能从客户端设置。
答案 3 :(得分:1)
由于你已经收集了所有使用jQuery的id,最好将所有id推入一个数组,然后使用像';'这样的连接运算符加入数组。将此连接值保存到隐藏文本字段<input type='hidden' id='txtHidIds' />
,并设置runat="server"
属性。然后使用
txtHidIds.Value
然后使用所使用的连接运算符进行拆分。您可以在数组中获取结果,然后操作包含所有ID的数组。
像
这样的东西$("#btn1").click(function() {
var arrChecked = new Array();
$("input[type='checkbox'].childCheck:checked").each(function() {
arrChecked.push($(this).attr("id"));
});
$("#txtHidIds").val(arrChecked.join(';'));
});