我的程序中datagrid 模板列是CheckBox,在datagrid外还有 一个CheckBox控件ID为chkAll,一个button按扭ID 为btnDel.当我单击chkAll选中datagrid当前页中的所有项,当我单击btnDel删除我所选种的所有项.请教该怎样实现??? 

解决方案 »

  1.   

    在datagrid的绑定事件里写:
    ((CheckBox)e.Item.FindControl("chkAll")).Checked=chkAll.Checked;
    很简单的
      

  2.   

    <asp:TemplateColumn HeaderText="选择">
    <HeaderStyle Width="30px"></HeaderStyle>
    <HeaderTemplate>
    <input type="checkbox" id="chkHeader" title="全选" onclick="SelectAll(this)" />全选
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox id="chkItem" Height="10" Runat="server"></asp:CheckBox>
    </ItemTemplate>
    <FooterStyle Width="30px"></FooterStyle>
    </asp:TemplateColumn>js:
    function SelectAll(box)    
    {
    for (var i=0;i<document.Form1.elements.length;i++)
    {
    var e = document.Form1.elements[i];
    if ( (e.type=='checkbox') )
    {
    var o=e.name.lastIndexOf('chkItem');
    if(o!=-1)
    {
    e.checked = box.checked;
    }
    }
            
    }
    }
    cs:private void btnDel_Click(object sender, System.EventArgs e)
    {
    if(this.DataGrid1.Items.Count >0)
    {
    for(int i = 0; i < this.DataGrid1.Items.Count; i++)
    {
    System.Web.UI.WebControls.CheckBox cb = (System.Web.UI.WebControls.CheckBox)this.DataGrid1.Items[i].FindControl("chkItem");
    if(cb.Checked)
    {
    int n = Convert.ToInt32(((System.Web.UI.WebControls.Label)this.DataGrid1.Items[i].FindControl("lblID")).Text.ToString().Trim());
    Del(SqlConn,n);
    } }
    }
    }
      

  3.   

    private void Grid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 
    {
    // 给页眉上的CheckBox添加触发事件chkAll.CheckedChanged +=new EventHandler(chkAll_CheckedChanged);
    }private void chkAll_CheckedChanged(object sender, System.EventArgs e) 
    {
        CheckBox chkAll = this.GetHeaderCheckBox(this.Grid);    foreach (DataGridItem oItem in this.Grid.Items)
        {
    CheckBox chk = (CheckBox)oItem.FindControl("chk");
    chk.Checked = chkAll.Checked;
        }
    }
      

  4.   

    接上面的// 得到指定DataGrid的题头的CheckBox对象private CheckBox GetHeaderCheckBox(DataGrid grd)
    {     CheckBox chkAll = null;     foreach (DataGridItem i in grd.Controls[0].Controls)
        {
    if(i.ItemType == ListItemType.Header)
    {
        chkAll = (CheckBox)i.FindControl("chkAll");
        break;
    }
        }
        return chkAll;
    }
      

  5.   

    孟子大哥, 可我这样却怎么出问题了 ,
    private void ckAll_CheckedChanged(object sender, System.EventArgs e)

    foreach(DataGridItem dgI in DataGrid1.Items )
    { ((CheckBox)dgI.FindControl("ckSelect")).Checked=ckAll.Checked;
    } }
    DataGrid1里的项并没有选种啊
      

  6.   

    for (int i=0;i<DataGrid1.Items.Count;i++ )
    {
    if (((CheckBox)DataGrid1.Items[i].FindControl("chkExport")).Checked==true)
    {


    }
    }
      

  7.   

    我的问题还没解决啊,还有吗,请求帮忙啊
    我的全选按纽在 datagrid外面!