2012-11-02 2 views
1

두 개의 확인란이있는 격자가 있습니다. 각 열에 대해 별도로 계산하고 싶습니다. 별도로 액세스 할 수 없습니다.격자의 다른 확인란에 액세스

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'; 
    } 
} 

그리드에서 두 개의 체크 박스 컬럼이 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에 대해 체크 박스의 수를 액세스하기 위해 여기 내가 시도 무엇인가?

답변

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" /> 
+0

반가워 다음과 같은 오류가 점점 오전 : 마이크로 소프트의 JScript 런타임 오류 : '인 parentNode가'있다 null이거나 개체가 아닙니다 – Richa

+0

당신이 대답에서와 동일한 온 클릭 속성을 사용하십니까? –

+0

예, 정확히 제안한대로 사용했습니다 – Richa

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; 
    } 
+0

마침내 그리드를 통해 반복되는 form..have를 통해 루핑하는 대신. – Richa

관련 문제