现在在datagrid中添加一模板列 实现了每个记录前有一复选框,但是在代码怎么编写  实现类似邮件里的选择几条记录删除,还有如何加一个全选后 可以同时删除所有记录?谢谢!

解决方案 »

  1.   

    Adding a CheckBox Column to a DataGrid
    http://www.codeproject.com/aspnet/datagridcheckboxcol.asp
      

  2.   

    Selecting multiple checkboxes in a DataGrid control
    http://www.codeproject.com/aspnet/datagridCheckboxes.asp
      

  3.   

    private void delButton_Click(object sender, System.EventArgs e)
    {
    System.Web.UI.WebControls.CheckBox checkBox;
    for( int i = 0; i < DataGrid1.Items.Count; i ++ )
    {
    //查找CheckBox控件
    checkBox = (CheckBox)DataGrid1.Items[i].FindControl("CheckBox1"); if(checkBox!=null && checkBox.Checked)
    {
    checkBoxID = DataGrid1.Items[i].Cells[1].Text; CB_ItemName = DataGrid1.Items[i].Cells[2].Text;

    delDataGrid();
    }

    }
    //重新绑定DataGrid
    BindData();

    }
      

  4.   

    // 选中复选框/取消复选框
    cb_SelectCancel.Attributes.Add("onclick","return cb('cb_SelectCancel')");function fob(n, d)
    {
       var p,i,x;if(!d) d=document;
       if((p=n.indexOf("?"))>0&&parent.frames.length) 
       {
           d=parent.frames[n.substring(p+1)].document;
           n=n.substring(0,p);
       }
       if(!(x=d[n])&&d.all) 
       x=d.all[n];
       for (i=0;!x&&i<d.forms.length;i++) 
       x=d.forms[i][n];
       for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
       x=fob(n,d.layers[i].document); 
       return x;
    }     function cb()
    {
       var a=cb.arguments;
       var name=fob(a[0]);
       e=document.forms(0).elements;
       if (name.checked==true)
       {
          for (i=0;i<e.length;i++)
          {
             e[i].checked=true;
          }
       }
       else
       {
          for (i=0;i<e.length;i++)
          {
             e[i].checked=false;
          }
       }
    }
      

  5.   

    <asp:TemplateColumn>
    <HeaderStyle Width="10%"></HeaderStyle>
    <ItemTemplate>
    <asp:CheckBox ID="cb_Id" Runat="server" />
    <asp:Label ID="lbl_Id" visible=False Text='<%# DataBinder.Eval(Container.DataItem,"ROLECODE").ToString() %>' Runat=server />
    </ItemTemplate>
    </asp:TemplateColumn>
      

  6.   

    private void btn_Del_Click(object sender, System.EventArgs e)
    {
    for (int i=0;i<((DataGrid)DataGrid1).Items.Count;i++)
    {
    CheckBox myCheckBox;
    Label myLabel;
    myCheckBox=(CheckBox)((DataGrid)DataGrid1).Items[i].FindControl("cb_Id");
    myLabel=(Label)((DataGrid)DataGrid1).Items[i].FindControl("lbl_Id");
    if(myCheckBox.Checked==true)
    {
    PLOper.RoleDelete(account,myLabel.Text.ToString());
    }
    }
      

  7.   

    问:To:xrascal(横刀夺爱)
    checkBoxID是什么 是checkbox的id属性? 又存放的是什么呢 是在grid中的序号还是在数据库表中的id号? 还有CB_ItemName 是什么存放的又是什么? delDataGrid()是删除吗? 怎么删除的呢? 根据什么来删除表中的记录? checkbox  id 中存放的内容? To:  19820911()  
    PLOper.RoleDelete(account,myLabel.Text.ToString()); 是什么自定义函数? 能否贴出看看?
      

  8.   

    (-)必须是摸板列,并在 页眉上 添家一个checkBox,而且是可以自动回传的
    (二)
    在摸版列里面再添加checkbox当页眉被选定产生事件,回传,每一行的checkBox都应该被选上
    具体代码你自己研究:
    页面添加:
    <asp:TemplateColumn>
    <HeaderStyle Width="10%"></HeaderStyle>
    <ItemStyle Wrap="False"></ItemStyle>
    <HeaderTemplate>
    <asp:CheckBox id="chkAllServer" runat="server" AutoPostBack="true"></asp:CheckBox>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox id="chkDelServer" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.News_ID") %>'>
    </asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    后台代码:
    private CheckBox GetHeaderCheckBox(DataGrid grd)
    { CheckBox chk = null; foreach (DataGridItem i in grd.Controls[0].Controls)
    { if(i.ItemType == ListItemType.Header)
    { chk = (CheckBox)i.FindControl("chkAllServer"); break; } } return chk; } private void chk_CheckedChanged(object sender, System.EventArgs e) 
    { CheckBox chk = this.GetHeaderCheckBox(this.DataGrid1); foreach (DataGridItem i in this.DataGrid1.Items)
    { CheckBox inChk = (CheckBox)i.FindControl("chkDelServer"); inChk.Checked = chk.Checked; } }
      

  9.   

    很简单的方法,就是用js实现:页面:  <asp:datagrid id="dgUserList" runat="server" Width="640px" BorderColor="White" PagerStyle-HorizontalAlign="Right"
                     AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
                     <AlternatingItemStyle BackColor="#F5F5F5"></AlternatingItemStyle>
                     <ItemStyle HorizontalAlign="Center"></ItemStyle>
                     <HeaderStyle HorizontalAlign="Center" ForeColor="White" BackColor="#4A95FD" Height="8"></HeaderStyle>
                     <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
                     <Columns>
                      <asp:TemplateColumn>
                       <HeaderTemplate>
                        <asp:CheckBox id="chkAll" runat="server"></asp:CheckBox>
                       </HeaderTemplate>
                       <ItemTemplate>
                        <asp:CheckBox id="chkItem" runat="server"></asp:CheckBox>
                       </ItemTemplate>
                      </asp:TemplateColumn>
                      <asp:BoundColumn DataField="id" HeaderText="序号"></asp:BoundColumn>
                      <asp:BoundColumn DataField="username" HeaderText="用户名"></asp:BoundColumn>
                      <asp:BoundColumn DataField="workno" HeaderText="工号"></asp:BoundColumn>
                      <asp:BoundColumn DataField="dept" HeaderText="部门"></asp:BoundColumn>
                     </Columns>
                     <PagerStyle Visible="False" HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
                    </asp:datagrid>  后台代码: private void dgUserList_PreRender(object sender, System.EventArgs e)
      {
       foreach (DataGridItem item in dgUserList.Controls[0].Controls)
       {
        if (item.ItemType == ListItemType.Header)
        {
         CheckBox chkAll=(CheckBox)item.FindControl("chkAll");
         System.Text.StringBuilder strScript = new System.Text.StringBuilder("<script language='javascript'> \n");
         strScript.Append("    function checkStatus() { \n");
         strScript.Append("        var bAll = true; \n");
         strScript.Append("        bAll = document.all('" + chkAll.ClientID + "').checked; \n");     for(int i=0; i<dgUserList.Items.Count ; i++)
         {
          strScript.Append("        document.all('" + dgUserList.Items[i].Cells[0].FindControl("chkItem").ClientID + "').checked = bAll; \n");
         }
         strScript.Append("    } \n");
         strScript.Append("</script> \n");     if(!Page.IsClientScriptBlockRegistered("checkStatus"))
          Page.RegisterClientScriptBlock("checkStatus",strScript.ToString());     chkAll.Attributes.Add("onclick","checkStatus()");
         return;
        }
       } 
      

  10.   

    http://www.cnblogs.com/fecitsky/articles/35858.aspx