ASP.Net 之Datalist删除功能详解附代码

  .aspx界面

  

复制代码 代码如下:

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head runat="server">

  <title>DataList控件删除操作(支持批量删除)</title>

  <script type="text/javascript">

  function CheckAll(Obj) {

  var AllObj = document.all;

  if (Obj.checked)//全选

  {

  for (var i = 0; i < AllObj.length; i++) {

  if (AllObj[i].type == "checkbox") {

  AllObj[i].checked = true;

  }

  }

  }

  else//反选

  {

  for (var i = 0; i < AllObj.length; i++) {

  if (AllObj[i].type == "checkbox") {

  AllObj[i].checked = false;

  }

  }

  }

  }

  </script>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <fieldset style="text-align: center; width: 540px;">

  <legend style=" text-align:center; ">使用Datalist删除数据(支持批量删除)</legend>

  <asp:DataList ID="DataList1" runat="server"

  onitemcommand="DataList1_ItemCommand" DataKeyField="id">

  <HeaderTemplate>

  <div style="text-align:center">

  <table border = "1" cellpadding="0" cellspacing="0"  style=" font-size:12; width:500px"  >

  <tr>

  <td style="width:100px">全选/反选<input id="Checkbox1" type="checkbox" name="全选" value="全选" onclick="return CheckAll(this)" title="全选" /></td>

  <td style="width:100px">用户编号</td>

  <td style="width:100px">用户昵称</td>

  <td style="width:100px">个性签名</td>

  <td style="width:100px">删除</td>

  </tr>

  </table>

  </div>

  </HeaderTemplate>

  <ItemTemplate>

  <div style="text-align:center">

  <table border = "1" cellpadding="0" cellspacing="0"  style=" font-size:12; width:500px"  >

  <tr>

  <td style="width:100px"> <asp:CheckBox ID="CheckBox2" runat="server" /></td>

  <td style="width:100px"><asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label></td>

  <td style="width:100px"><asp:Label ID="Label2" runat="server" Text='<%# Eval("bg_name") %>'></asp:Label></td>

  <td style="width:100px"><asp:Label ID="Label3" runat="server" Text='<%# Eval("bg_p_autograph") %>'></asp:Label></td>

  <td style="width:100px"><asp:Button ID="btnDelete" runat="server" Text="删除"  CommandName="delete"

  BorderStyle="None" onclientclick="return confirm("确认删除?");" /></td><%--请注意此处的CommandName命令--%>

  </tr>

  </table>

  </div>

  </ItemTemplate>

  <FooterTemplate>

  <div style="text-align:center">

  <table border="1" cellpadding="0" cellspacing="0" style="font-size:12px; width:100%">

  <tr>

  <td style="width:100%; text-align:center">

  <asp:Button ID="btnPLDelete" runat="server" Text="批量删除"  CommandName="pldelete"

  BorderStyle="None" onclientclick="return confirm("确认删除?");"  /></td>

  </tr>

  </table>

  </div>

  </FooterTemplate>

  </asp:DataList>

  </fieldset>

  </div>

  </form>

  </body>

  </html>

  .cs界面

  

复制代码 代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Data;

  using System.Data.SqlClient;

  using System.Configuration;

  public partial class _Default : System.Web.UI.Page

  {

  ////得到Web.config 中的连接放在变量中

  SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  //调用自定义方法绑定数据到控件(为以后做MVC打下基础)

  BindDataList();

  }

  }

  //对datelist进行数据绑定

  private void BindDataList()

  {

  //定义查询语句,这里最好将SQL语句在SQL中写好并验证正确确在复制粘贴过来(在对数据查询时最好只查所需的一些不需要的数据就不要取出,这样可以提高运行的效率)

  string strSql = "SELECT * FROM bg_spatial";//定义一条SQL语句

  SqlDataAdapter sda = new SqlDataAdapter(strSql, con);

  DataSet ds = new DataSet();

  sda.Fill(ds);//把执行得到的数据放在数据集中

  DataList1.DataSource = ds;

  DataList1.DataBind();

  }

  protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)

  {

  switch (e.CommandName)

  {

  //单条数据删除操作

  case "delete":

  //取得当前Datalist控件列

  int id = int.Parse(DataList1.DataKeys[e.Item.ItemIndex].ToString());

  string strSQL = "delete from bg_spatial where id='" + id + "'";

  if (con.State.Equals(ConnectionState.Closed))

  {

  con.Open();//打开数据库

  }

  SqlCommand cmd = new SqlCommand(strSQL, con);

  if (Convert.ToInt32(cmd.ExecuteNonQuery())>0)

  {

  Response.Write("<script>alert('删除成功!')</script>");

  BindDataList();

  }

  else

  {

  Response.Write("<script>alert('删除失败!请查找原因')</script>");

  }

  con.Close();//关闭连接

  break;

  //批量数据删除操作

  case "pldelete":

  if (con.State.Equals(ConnectionState.Closed))

  {

  con.Open();//打开数据库

  }

  DataListItemCollection dlic = DataList1.Items;//创建一个DataList列表项集合对象

  //执行一个循环删除所选中的信息

  for (int i = 0; i < dlic.Count; i++)

  {

  if (dlic[i].ItemType == ListItemType.AlternatingItem||dlic[i].ItemType == ListItemType.Item)

  {

  CheckBox cbox = (CheckBox)dlic[i].FindControl("CheckBox2");

  if (cbox.Checked)

  {

  int p_id = int.Parse(DataList1.DataKeys[dlic[i].ItemIndex].ToString());

  SqlCommand p_cmd = new SqlCommand("delete from bg_spatial where id=" + p_id , con);

  p_cmd.ExecuteNonQuery();

  }

  }

  }

  con.Close();

  BindDataList();

  break;

  }

  }

  }

  运行效果图:

ASP.Net 之Datalist删除功能详解附代码