datagrid批量删除记录

首先,需要定义一个主键列,用于当选中此行记录时的标识,可以用visible="true"让它隐藏

<asp:BoundColumn DataField="fkey" Visible="False" ReadOnly="True" />


一、在datagrid控件中添加一模板列,此模板列用于选择要删除的所有item
二、在此模板列<itemTemplate>项中加入一asp.net控件 asp:CheckBox

<ItemTemplate>
                                                                        
<asp:CheckBox id="chkRow" runat="server"></asp:CheckBox>
                                                                    
</ItemTemplate>


 三、在此模板列<HeaderTemplate>项中加入html控件 checkbox,添加一客户端事件onclick="checkAll()"

<HeaderTemplate>
    
<input type="checkbox" name="allbox" onclick="javascript:checkAll();"></HeaderTemplate>

四、添加checkAll函数,作用是当选择标题的复选框时,选中datagrid中所有的复选框列表项
<script language="javascript">
        
function checkAll()
        
{
            
            
var frm=document.Form1 ;
            
            
            
            
for(var i=0;i<frm.elements.length;i++)
            
{
            
                
var e=frm.elements[i];
                
                
if(e.name!="allbox" && e.type=="checkbox"//仅对datagrid <itemTemplate>中的checkbox执行操作
                {
                    
var eName= e.name.split(':');
                    
if(eName[0]=="dgData")
                    
{
                        e.checked
=frm.allbox.checked;
                    }

                    
                }

            }

            
            
        }

        
        
</script>

五、在此模板<FooterTemplate>项中添加一个服务端button,单击此按钮就执行相应的操作
<asp:LinkButton id="lbntDelAll" runat="server" OnClick="lbntDelAll_OnClick">删除所选项</asp:LinkButton>
六、添加asp:LinkButton控件的服务端代码

 protected void lbntDelAll_OnClick(object sender,System.EventArgs e)
  {
   System.Text.StringBuilder dels=new System.Text.StringBuilder("");//要删除的所有主键
   bool first=true;
   foreach(DataGridItem item in dgData.Items) //遍历所有item找出所有要删除的主键
   {
    switch(item.ItemType )
    {
     case ListItemType.Footer :
      break;
     case ListItemType.Header :
      break;
     default:
      CheckBox chk=(CheckBox)item.Cells[1].FindControl("chkRow");
      if(chk.Checked)
      {
       if(first)
       {
        first=false;
       }
       else
       {
       dels.Append (",");
       }
       
       dels.Append("'"+item.Cells[0].Text +"'");
      }
      break;
    }
    
    
   }
   if(dels.ToString()!="")
   {
    string msg;
    bool b=_m.Delete(dels.ToString(),out msg);  //执行具体操作

     
 
  }

原文地址:https://www.cnblogs.com/eric812/p/351546.html