3

我有一个 ASP.NET 网页,其中包含一个复选框表和一个按钮。我需要找到按钮单击发生时选中的所有复选框的 ID。一旦收集了 ID 列表,就需要将其传递给服务器。我可以使用 jQuery 和 PageMethods 来做到这一点。

如何在代码隐藏文件中的按钮单击处理程序中实现这一点?即当按钮单击发生时选中的所有复选框的 ID。

我想在后面的代码中执行此操作,因为文件后面的代码包含一些创建图表并将其导出为 PDF 的函数,并且图表是根据选中的复选框创建的。

请建议。

干杯

4

4 回答 4

3

如果您的复选框是服务器控件,那么只需遍历复选框列表项并查找在您的按钮单击事件中选中的项。

如果您的复选框是 html 控件,则使用 javascript 将值放入隐藏的 html 输入控件中,然后在按钮单击事件中访问此值。

于 2010-01-12T06:16:35.803 回答
2

如果您没有为复选框使用服务器控件或复选框已在运行时动态添加,则可以使用先前答案的替代方法是遍历作为回发的一部分发送的 Form 集合。如果一个复选框被选中,它将被添加到这个集合中,它的 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
        }
    }
于 2010-01-12T09:32:13.537 回答
1

首先,我建议您重新考虑为什么要尝试发现在客户端选择了哪些复选框并将其作为参数传递给表单帖子。为什么不在按钮的 onclick 事件中直接枚举它们呢?

其次,假设有一些最终要求这样做,我建议您使用 jquery 来发现所有复选框并将它们的 ID 存储在隐藏表单字段中的分隔字符串中。我不确定你为什么觉得有必要将此信息作为直接参数传递给按钮单击事件本身,但不建议这样做。

编辑:一个 ASP.NET 按钮控件有一个 CommandArgument 属性,您可以使用它来存储它,但它似乎不能从客户端设置。

于 2010-01-12T06:17:22.713 回答
1

由于您已经使用 jQuery 收集了所有 id,因此最好将所有 id 推送到一个数组中,然后使用像“;”这样的连接运算符加入数组。将此连接值保存到<input type='hidden' id='txtHidIds' />具有runat="server"属性集的隐藏文本字段中。然后使用 C# 从 C# 中获取此隐藏字段的值

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(';'));
});
于 2010-01-12T06:27:09.793 回答