2010-01-12 106 views
3

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

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

我想在后面的代码中执行它,因为代码背后的代码包含几个函数,这些函数创建图表并将其导出为PDF,并根据选中的复选框创建图表。

请建议。

欢呼

回答

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 
     } 
    } 
3

如果您的复选框是服务器控件,然后再才刚刚通过复选框列表项迭代,发现它们在你的按钮的Click事件检查。

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

+0

Pulse也说明了如何做到这一点! – 2010-01-12 06:52:40

1

首先,我建议您重新考虑为什么要尝试发现在客户端选择哪个复选框,并将其作为参数传递给表单文章。为什么不直接在按钮的onclick事件中枚举它们?第二,假设有一些最终要求这样做,我建议你使用jquery来发现所有选中的框并将它们的ID存储在隐藏表单字段中的分隔字符串中。我不确定为什么您不得不将这些信息作为按钮点击事件本身的直接参数传递,但不建议这样做。

编辑:一个ASP.NET按钮控件有一个CommandArgument属性可以用来存储它,但它不会出现,这是可以从客户端设置的。

1

由于您已经收集了所有使用jQuery的id,最好将所有id推入数组,然后使用连接运算符(如';')连接数组。将此连接值保存到runat="server"属性集中的隐藏文本字段<input type='hidden' id='txtHidIds' />。然后从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(';')); 
}); 
相关问题