2014-01-09 5 views
1

У меня есть gridview, который содержит 2 coulmns с флажками. У меня есть один заголовочный столбец с флажком «Утвердить все», а другой - «Отклонить все». Когда я нажимаю на любой из флажков, все дочерние флажки, присутствующие в этом gridview, проверяются, но я хочу, чтобы флажки были отмечены только этими конкретными столбцами. Пожалуйста, помогите:Выбрать все CheckBoxes в определенном столбце в GridView (asp.net)

<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> 
+1

Этот URL может помочь вам [http://www.codeproject.com/Articles/11207/Selecting -multiple-checkboxes-inside-a-GridView-co] – Sri

+0

Почему вы используете один флажок для одобрения всех и другого для отклонения всех? Разве это не работало бы с одним? Вы измените текст на checkAll в зависимости от того, проверен он или нет. Это просто мысль ... –

ответ

0

Использование 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> 
+0

Для этого вы должны использовать функцию prop-function, $ («: checkbox»). Prop («checked», true); http://api.jquery.com/prop/ – Esko

+0

Это всегда будет проверять все дочерние 'CheckBoxes', независимо от того, какой родительский флажок CheckBox был проверен/не установлен. –

Смежные вопросы