在datagrid里,表头有一个checkbox,如何让它选中的时候,所有模板列里的checkbox都选中呢?(不考虑分页)

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=FF130C7F-3650-4DA6-8943-8AA4AF3E3459效果在这:
    http://dotnet.aspx.cc/Exam/DataGridCheckBox/DataGridCheckBox.aspx
      

  2.   

    foreach( DataGridItem _item in dgList.Items )
    {
    CheckBox cb = (CheckBox)_item.FindControl("chkbox");
    cb.Checked = true ;
    }
      

  3.   

    private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
    {
      foreach( DataGridItem _item in dgList.Items )
      {
        CheckBox cb = (CheckBox)_item.FindControl("chkbox");
        cb.Checked = true ;
      }
    }
      

  4.   

    对不起了,各位大虾,我没说清楚,表头的那个checkbox是在<headertemplate>列里,代码:
    <asp:TemplateColumn HeaderText="Disable">
    <HeaderStyle CssClass="GridHeaderSmall"></HeaderStyle>
    <HeaderTemplate>
    <asp:Label ID="lblh11" Runat =server Text="Disable" ForeColor ="red"></asp:Label>
    <asp:CheckBox ID="chkAll" Runat =server OnCheckedChanged ="CheckAll(this);"></asp:CheckBox>
    </HeaderTemplate>
    <ItemStyle CssClass="GridItemSmall"></ItemStyle>
    <ItemTemplate><asp:CheckBox ID=chkDisabled Runat =server Checked='<%# GetStatus(DataBinder.Eval(Container.DataItem,"Status","{0}"))%>'></asp:CheckBox></ItemTemplate>
    </asp:TemplateColumn>
    当我选中checkall 的时候,要选中所有的checkbox.能不能给出一点代码?
      

  5.   

    js实现是最好的办法
     yourCheckBox.Attributes.Add("onclick",return selectAll(this)");function selectAll(varcb)
    {
       var dt = document.all.<%= yourGrid.ClientID %>
       for(var i = 1;i<dt.rows.length;i++)
       {
            dt.rows(i).cells(j).childNodes(0).checked = varcb.checked;
       }
       return false;
    }
      

  6.   

    数据绑定的时候if(e.Item.ItemType == ListItemType.Header)
    {
        CheckBox cb = (CheckBox)e.Item.FindControl("chkAll");  
        cb.Attributes.Add("onclick",return selectAll(this)");
    }
      

  7.   

    brightheros:
    我的那个选中所有的checkbox在<headertemplete>里,没法给它加attribute啊
      

  8.   

    数据绑定的时候
    if(e.Item.ItemType == ListItemType.Header)
    {
        CheckBox cb = (CheckBox)e.Item.FindControl("chkAll");  
        cb.Attributes.Add("onclick",return selectAll(this)");
    }你试试,我从来没有用过Header里面的控件:)
    应该是可以的吧
      

  9.   

    brightheroes:
    你的方法可以选中模板列所有的checkbox,但要取消的时候就不行了,而且表头的checkbox不管你选中没选中都是没有选中的样子.
      

  10.   

    sorry
    checkbox居然不能return false;

    if(e.Item.ItemType == ListItemType.Header)
    {
        CheckBox cb = (CheckBox)e.Item.FindControl("chkAll");  
        cb.Attributes.Add("onclick","selectAll(this)");
    }function selectAll(varcb)
    {
       var dt = document.all.<%= yourGrid.ClientID %>
       for(var i = 1;i<dt.rows.length;i++)
       {
            dt.rows(i).cells(j).childNodes(0).checked = varcb.checked;
       }
    }这样就好了
      

  11.   

    <script language="javascript">
    function submitSelectAll(){
    document.all('Button12').click();
    return false;
    }
     Private Sub selectAll()
            Dim i As Integer        For i = 0 To DataGrid1.Items.Count - 1
                CType(DataGrid1.Items(i).Cells(0).FindControl("CheckBox1"), CheckBox).Checked = True
            Next
        End Sub
     Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Dim item As DataGridItem        If (e.Item.ItemType = ListItemType.Header) Then
                CType(e.Item.FindControl("Button3"), Button).Attributes.Add("onclick", "javascript:return submitSelectAll();")
            End If
      

  12.   

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
            Call selectAll()
        End Sub