【问题标题】:Select all CheckBoxes in a particular column in GridView(asp.net)在 GridView(asp.net) 中选择特定列中的所有复选框
【发布时间】:2014-01-09 10:39:00
【问题描述】:

我有一个网格视图,其中包含 2 个带有复选框的列。 我有一个标题列,其中一个名为 Approve all 的复选框和另一个名为 Reject all 的复选框。 当我单击其中一个复选框时,该网格视图中存在的所有子复选框都会被选中,但我只想选中特定列的复选框。请帮忙:

<script type="text/javascript" language="javascript">
    function checkAll(objRef) {
    var GridView = objRef.parentNode.parentNode.parentNode;
    var inputList = GridView.getElementsByTagName("input");

    for (var i = 0; i < inputList.length; i++) {
        var row = inputList[i].parentNode.parentNode;

            if (inputList[i].type == "checkbox" && objRef != inputList[i]) {
                if (objRef.checked) {
                    row.style.backgroundColor = "#c3d9ff";
                    inputList[i].checked = true;
                }
                else {
                    if (row.rowIndex % 2 == 0) {
                        row.style.backgroundColor = "#c3d9ff";
                    }
                    else {
                        row.style.backgroundColor = "white";
                    }

                    inputList[i].checked = false;
                }
            }
        }
    }
</script>

<asp:GridView ID="gvDetails" runat="server" AlternatingRowStyle-CssClass="myGridAlternatingItemStyle" Width="98%" Height="500px" AllowPaging="false" ShowFooter="false" AutoGenerateColumns="False" >
    <FooterStyle CssClass="myGridTextItem" />
    <RowStyle CssClass="myGridTextItem"/>
    <SelectedRowStyle CssClass="myGridSelectedItemStyle"/>
    <%-- <HeaderStyle CssClass="myGridHeader" />--%>
    <AlternatingRowStyle CssClass="myGridAlternatingItemStyle" />
    <HeaderStyle CssClass="GVFixedHeader" />
    <Columns>
        <!-- I have few Data columns here -->
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:CheckBox ID="checkAll" Text="Approve All" TextAlign="Left" runat="server" onclick="checkAll(this);" />
            </HeaderTemplate>
            <HeaderStyle CssClass="myGridHeader" ForeColor="White" HorizontalAlign="Center" Width="90px" />
            <ItemStyle HorizontalAlign="Center" />
            <ItemTemplate>
                <asp:CheckBox ID="CheckApprove" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:CheckBox ID="RejAll" Text="Reject All " TextAlign="Left"  runat="server" onclick="checkAll(this);" />
            </HeaderTemplate>
            <HeaderStyle CssClass="myGridHeader" ForeColor="White" HorizontalAlign="Center" Width="80px" />
            <ItemStyle HorizontalAlign="Center" />
            <ItemTemplate>
                <asp:CheckBox ID="CheckReject" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>                   
</asp:GridView>

【问题讨论】:

  • 这个网址可能对你有帮助 [codeproject.com/Articles/11207/…
  • 为什么你使用一个复选框来批准所有而另一个复选框来拒绝所有?只用一个不就行了吗?您可以根据是否检查来更改 checkAll 上的文本。这只是一个想法......

标签: asp.net select gridview checkbox


【解决方案1】:

使用 jquery 来解决这类问题,可能会减少你的时间

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script type="text/javascript">
    function checkAll(data) {
        $('[id$=checkAll]').click(function() {
            $("[id$='CheckApprove']").attr('checked', true);
        });     
        $('[id$=RejAll]').click(function() {
            $("[id$='CheckReject']").attr('checked', false);
        });
    }
</script>

【讨论】:

  • 你应该为此使用 prop-function,$(":checkbox").prop("checked", true); api.jquery.com/prop
  • 这将始终检查所有子 CheckBoxes,而不管父 CheckBox 是否被选中/取消选中。
猜你喜欢
  • 2017-03-18
  • 2011-02-20
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2016-01-17
  • 2019-05-28
  • 2022-09-22
  • 1970-01-01
相关资源
最近更新 更多