DataList Learning——Delete A Item

从DataList控件中删除一条记录

今天把DataList控件的一些用法从MSDN中学习了一点,第一感觉就是,原来对控件我还有好多东西要学。

在MSDN中有一个示例是说“如何:允许用户删除 DataList Web 服务器控件中的项”,其具体的地址为:ms-help://MS.MSDNQTR.v90.chs/dv_vwdcon/html/44c76175-34b4-4dec-95d7-f9f6fd1fe00d.htm

可以将这个地址直接在MSDN中输入,然后就得到了这个页面了。

好,下面言归正传。

删除DataList控件中的项就我目前知道的来说,有两种,第一种就是按照MSDN中所说的,利用数据源控件来做。具体如何我就不说了,MSDN中现成的。

第二种是利用SQL语句来做的。因为我认为,做项目不可能全用数据源控件,现在不是讲究分层开发么。

首先是我的页面

image

这个是我的DataList控件。里面有一个Label一个Button。

我在source中绑定了Label的数据字段:

  1. <asp:DataList ID="DataList" runat="server"
  2.     onselectedindexchanged="DataList_SelectedIndexChanged" DataKeyField="ó?户§±ào?"
  3.     ondeletecommand="DataList_DeleteCommand">
  4.     <ItemTemplate>
  5.         <asp:Label ID="Label_Item" runat="server"><%#Eval("ó?户§±ào?") %></asp:Label>
  6.         <br />
  7.         <asp:Button ID="Button_ItemDelete" runat="server" CommandName="delete"
  8.             Text="é?3y′?ì?记?录?" Width="156px" />
  9.     </ItemTemplate>
  10. </asp:DataList>

注意,由于我用的是VS2010,所以中文利用插件复制到这里的都是乱码,见谅。

然后是我给DataList控件绑定数据源的一个函数

乱码的地方为中文,请自行替换
  1. void bind()
  2. {
  3.     string strConn = @"Data Source=CONGJUNFENG-PC\SQLEXPRESS;Initial Catalog=控?件têμ验é;Integrated Security=True;Pooling=False";
  4.     string strCmd = "select * from ó?户§±í";
  5.     SqlConnection conn = new SqlConnection(strConn);
  6.     SqlCommand cmd;
  7.     cmd = conn.CreateCommand();
  8.     cmd.CommandText = strCmd;
  9.     SqlDataAdapter da = new SqlDataAdapter(cmd);
  10.     DataSet ds = new DataSet();
  11.     conn.Open();
  12.     da.Fill(ds,"ó?户§±í");
  13.  
  14.     DataList.DataSource = ds.Tables["ó?户§±í"].DefaultView;
  15.     DataList.DataBind();
  16.     DataList.DataKeyField = "ó?户§±ào?";
  17.  
  18.     Button b;
  19.     b = (Button)DataList.FindControl("Button_ItemDelete");
  20.  
  21.     conn.Close();
  22. }

再然后呢,就是删除的事件了

乱码的地方为中文,请自行替换
  1. protected void DataList_DeleteCommand(object source, DataListCommandEventArgs e)
  2. {
  3.     int id = (int)DataList.DataKeys[e.Item.ItemIndex]+1;
  4.  
  5.     string strConn = @"Data Source=CONGJUNFENG-PC\SQLEXPRESS;Initial Catalog=控?件têμ验é;Integrated Security=True;Pooling=False";
  6.  
  7.     SqlConnection conn = new SqlConnection(strConn);
  8.     SqlCommand cmd;
  9.     cmd = conn.CreateCommand();
  10.  
  11.     conn.Open();
  12.  
  13.     cmd.CommandText = "delete from ó?户§±í where ó?户§±ào?="+(id-1);
  14.     cmd.ExecuteNonQuery();
  15.  
  16.     bind();
  17.     conn.Close();        
  18. }

在这里有一个小点,如果看了MSDN的话应该不会出错,而如果没有看的话,就很可能会出错,那就是将按钮的CommandName属性设置为delete,定义的是DataList的DeleteCommand事件。这是因为只有在单机按钮后,按钮传出一个delete事件引起DataList的DeleteCommand事件。这里我曾经尝试了在绑定数据源的函数中给按钮设置,但是出错了(囧~~),所以我也就没有再继续尝试了,直接就在按钮的属性面板里面改了。

原文地址:https://www.cnblogs.com/skyler/p/1718865.html