【问题标题】:How to use the same name in input checkbox when we use asp:CheckBoxList当我们使用 asp:CheckBoxList 时如何在输入复选框中使用相同的名称
【发布时间】:2012-07-30 00:06:01
【问题描述】:

我通常避免使用 asp: 控件,并且总是使用带有 runat="server" 的纯 html 控件,因为它们不灵活。但是,我们有一个使用这些 asp:controls 构建的系统。我别无选择,只能遵循它的构建方式。

这就是问题所在,当我数据绑定asp:CheckBoxList 控制DataTextField="Name"DataValueField="ID" 时,每个输入复选框都使用不同的名称,当我需要选中的复选框ID 时,我必须遍历整个checkboxlist 以读取选定的值。

如果我们使用所有这些input name="Types" 并读取Request.Form["Types"],我们可以得到所有选择的ID 值,用逗号“,”分隔。这样,我可以避免循环遍历该checkboxlist 中的所有项目。有什么办法可以让那些input checkbox 使用相同的名字吗?

谢谢。

编辑:

我试过了,还是不行

ChkPropertyFeatures.Attributes.Add("name", "Types")

我想使用相同名称的原因不仅仅是为了避免在后端循环。我需要使用 jquery 通过名称属性选择所有这些复选框。是的,我知道我可以按类名进行选择,但我想知道是否可以更改 Checkboxlist 控件生成的那些复选框的名称属性。

【问题讨论】:

  • 伙计,我知道如何获取选定的项目。这是一个非常简单的循环。关键是我想设置asp Checkboxlist生成的那些复选框的“名称”属性

标签: asp.net webforms checkboxlist


【解决方案1】:

您不能从服务器端设置 Web 控件的名称。如果需要,可以使用 javascript 更改名称属性。

$("input[type='checkbox']").attr("name", "Types");

【讨论】:

  • 好吧,伙计,我需要使用三个复选框组。它们都将具有名称属性="Types"。我有类型、功能和类别组。
【解决方案2】:

CheckBoxList 生成一个包含列表中每个复选框的跨度:

<table id="CheckBoxList1">
    <tr>
        <td><span name="chenchi"><input id="CheckBoxList1_0" type="checkbox" name="CheckBoxList1$0" value="Uno" /><label for="CheckBoxList1_0">Uno</label></span></td>
    </tr><tr>
        <td><span name="chenchi"><input id="CheckBoxList1_1" type="checkbox" name="CheckBoxList1$1" checked="checked" value="Dos" /><label for="CheckBoxList1_1">Dos</label></span></td>
    </tr><tr>
        <td><span name="chenchi"><input id="CheckBoxList1_2" type="checkbox" name="CheckBoxList1$2" checked="checked" value="Tres" /><label for="CheckBoxList1_2">Tres</label></span></td>
    </tr>
</table>

您可以通过这种方式动态更改每个跨度的名称:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        For Each c As ListItem In Me.CheckBoxList1.Items
                   c.Attributes("name") = "chenchi"
        Next
    End If
End Sub

然后你可以使用jquery来查看每个复选框是否被选中:

var sps = $('#CheckBoxList1').find('[name="chenchi"]');
sps.each(function (i) {
       alert( $(this).find('input:checkbox').attr('checked') ); 
});

希望我能很好地理解你的问题。

【讨论】:

  • 感谢您的宝贵时间,伙计。我想更改复选框的名称,而不是跨度。
  • 谢谢我前几天读过那篇文章。它包括很多工作。我宁愿选择在中继器中使用我自己的输入复选框。
猜你喜欢
  • 2021-06-07
  • 1970-01-01
  • 2021-08-14
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多