1

2 つのチェックボックス列を持つグリッドがあります。各列に個別のカウントが必要です。それらに個別にアクセスすることはできません。これが私が試したことです:

function CountChkBxCancel() {
    function CountChkBx() {  
        for (var i = 0; i < document.forms[0].length; i++) {
        if (document.forms[0].elements[i].checked) {
            numChecked = numChecked + 1;
        }
    }
    document.getElementById('<%=lblConfirmationCount.ClientID %>').value = numChecked;
    CountChkBxCancel();
    if (numChecked > 0) {
        document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = numChecked;
    }else {
        document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = '0';
    }
}

グリッド内の 2 つのチェックボックス列のこの ID

<ItemTemplate>
    <%-- <asp:Label ID="Label6" runat="server"> <%#         Container.DataItemIndex + 1 %></asp:Label> --%>
    <asp:CheckBox ID="chkNominee" runat="server" onclick="CountChkBx()" />
</ItemTemplate>
<ItemTemplate>
    <asp:CheckBox ID="chkCancel" runat="server" onclick="CountChkBxCancel()" />
</ItemTemplate>

これらの異なる ID のチェックボックス数にアクセスするには?

4

2 に答える 2

0
 <script type="text/javascript">
      function CountChkBx(checkBox) {
           var checked = 0;
           var checkBoxes = document.getElementsByClassName(checkBox.parentNode.className);
           for (var i = 0; i < checkBoxes.length; i++) {
                if (checkBoxes[i].getElementsByTagName("INPUT")[0].checked) {
                     checked++;
                }
           }

           var label = null;
           switch (checkBox.parentNode.className) {
                case "cbNominee":
                     label = document.getElementById("<%= lblConfirmationCount.ClientID %>");
                     break;
                case "cbCancel":
                     label = document.getElementById("<%= lblCancelCount.ClientID %>");
                     break;
           }

           if (label) {
                label.innerHTML = checked.toString();
           }
      }
 </script>

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" >
      <Columns>
           <asp:TemplateField>
                <ItemTemplate>
                     <asp:CheckBox ID="chkNominee" runat="server" CssClass="cbNominee" onclick="CountChkBx(this)" />
                </ItemTemplate>
           </asp:TemplateField>
           <asp:TemplateField>
                <ItemTemplate>
                     <asp:CheckBox ID="chkCancel" runat="server" CssClass="cbCancel" onclick="CountChkBx(this)" />
                </ItemTemplate>
           </asp:TemplateField>
      </Columns>
 </asp:GridView>
 <br />
 Confirmed: <asp:Label runat="server" ID="lblConfirmationCount" />
 <br />
 Canceled: <asp:Label runat="server" ID="lblCancelCount" />
于 2012-11-02T08:35:52.963 に答える
0
             function CountChkBx() {
                    var confirmCount = 0;
        var cancelCount = 0;
        Parent = document.getElementById('<%= this.gvNominationList.ClientID %>');
        for (i = 1; i < Parent.rows.length; i++) {
            var tr = Parent.rows[i];
            //                var td = tr.firstChild;
            //                var item = td.firstChild;
            var td1 = tr.childNodes[0];
            var td2 = tr.childNodes[1];
            var item1 = td1.childNodes[0].firstChild;
            var item2 = td2.childNodes[0].firstChild;

            if (item1.type == "checkbox") {
                if (item1.checked)
                    confirmCount = confirmCount + 1;
            }

            if (item2.type == "checkbox") {
                if (item2.checked)
                    cancelCount = cancelCount + 1;
            }

        }
        document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = confirmCount;
        document.getElementById('<%=lblCancelCount.ClientID %>').innerHTML = cancelCount;
    }
于 2012-11-02T11:43:35.340 に答える