【问题标题】:How to check all asp.net checkboxes on single asp.net button click event?如何检查单个 asp.net 按钮单击事件上的所有 asp.net 复选框?
【发布时间】:2011-04-03 08:06:24
【问题描述】:

如何检查单个 asp.net 按钮单击事件上的所有 asp.net 复选框

如果我在 panel1 中有 45 个复选框,我希望在按钮单击事件上所有复选框都将被选中,而在另一个按钮单击事件上,所有复选框都将被取消选中...

如何使用 jquery、javascript 或 vb.net 来实现?

【问题讨论】:

    标签: javascript jquery asp.net vb.net


    【解决方案1】:

    使用 jQuery 你可以做到

    var $checkboxes = $('input[type=checkbox]');
    $('#check').toggle(function() {
        $checkboxes.attr('checked', 'checked');
        return false;
    
    }, function() {
        $checkboxes.removeAttr('checked');
        return false;
    });
    

    http://jsfiddle.net/zgTw3/5/查看工作示例

    【讨论】:

    • 您使用的服务器端语言无关紧要。确保在代码之前加载 jQuery。您也可以尝试使用文档就绪函数 $(function(){..}) 包装代码
    【解决方案2】:

    这是您的复选框、面板和按钮的 aspx 文件代码;

    <asp:Panel ID="Panel1" runat="server">
    
        <asp:CheckBox ID="CheckBox1" runat="server" />
        <asp:CheckBox ID="CheckBox2" runat="server" />
        <asp:CheckBox ID="CheckBox3" runat="server" />
    
    </asp:Panel>
    <asp:Button Text="click" ID="Button1" runat="server" onclick="Button1_Click" />
    

    这是你的按钮点击事件事件的c#代码;

    protected void Button1_Click(object sender, EventArgs e) {
    
        foreach (Control c in Panel1.Controls) {
    
            if (c is CheckBox) {
    
                (c as CheckBox).Checked = true;
            }
    
        }
    }
    

    这是这段c#代码的VB版本;

    Protected Sub Button1_Click(sender As Object, e As EventArgs)
    
        For Each c As Control In Panel1.Controls
    
            If TypeOf c Is CheckBox Then
    
                TryCast(c, CheckBox).Checked = True
    
            End If
        Next
    End Sub
    

    当你点击按钮时,它应该批量检查所有的复选框。

    编辑:

    如果您想在同一次点击中选中未选中的并取消选中选中的,请执行以下操作

    C#:

        protected void Button1_Click(object sender, EventArgs e) {
    
            foreach (Control c in Panel1.Controls) {
    
                if (c is CheckBox) {
    
                    if ((c as CheckBox).Checked) {
    
                        (c as CheckBox).Checked = false;
    
                    } else {
    
                        (c as CheckBox).Checked = true;
                    }
                }
    
            }
        }
    

    VB:

    Protected Sub Button1_Click(sender As Object, e As EventArgs)
    
        For Each c As Control In Panel1.Controls
    
            If TypeOf c Is CheckBox Then
    
                If TryCast(c, CheckBox).Checked Then
    
    
                    TryCast(c, CheckBox).Checked = False
                Else
    
                    TryCast(c, CheckBox).Checked = True
                End If
    
            End If
        Next
    End Sub
    

    【讨论】:

    • 它只会选中所有复选框,而不是取消选中我想要事件检查和取消选中的所有复选框......并且页面也会被刷新......
    • @pooja 它肯定会刷新页面。是否要在同一次点击中选中未选中的并取消选中已选中的?
    • @pooja 我编辑了我的答案,以便在同一次点击中检查未选中的答案并取消选中已选中的答案。
    • 当然,这样的事情(必须)可以在客户端完成,你不觉得吗?
    • @pooja 当然。 @Hussein 已经给出了这个例子。再次给出相同的答案会很冗长,你不觉得吗?我只是想探索这里的选项。
    【解决方案3】:

    在其控件上呈现 IDs 和 NAMEs 时,ASP.NET 有点怪癖。

    试试这样的:

    <asp:Button ID="myToggleButton" runat="server" Text="Toggle Checkboxes" />
    

    然后在你的脚本中

    $('[id$="myToggleButton"]').click(function(){
        $('input:checkbox')
             .filter(':checked')
             .attr('checked',false)
             .end()
             .not(':checked')
             .attr('checked',true)
             ;        
    });
    

    或类似的想法。我很确定您可以进一步优化该 jQuery 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2016-03-16
      • 2016-07-19
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多