在 ASP.NET DataGrid 中编辑和删除多条数据






3.08/5 (8投票s)
2007年3月15日

96276

2495
在 ASP.NET DataGrid 中编辑和删除多条数据
下载 MultipleDeletionDatagrid.zip - 22.7 KB
引言
我发现一个常见的任务是创建一个具有多条删除选项的 DataGrid,就像 HOTMAIL 一样……这激励我编写这段代码。以下是在 DataGrid 中编辑和删除多条数据的代码。
背景
(可选) 是否有任何关于本文的背景信息可能有用,例如对所介绍的基本思想的介绍?
使用代码
要使用此代码,只需解压缩文件,因为我没有附加整个项目文件,所以您需要在项目中添加页面,并进行一些修改,正如您始终需要的。
代码块应设置为“Formatted”样式,如下所示
// // Any source code blocks look like this // using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.OleDb; using System.Configuration; namespace DelhiApp.Testing { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.DataGrid DataGrid2; protected System.Web.UI.WebControls.Panel Panel3; private void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) { BindData(DataGrid2); Button2.Attributes.Add("onclick","return confirm('Are you sure you wish to delete these records?');"); } } private void BindData(DataGrid DataGrid1) { OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]); OleDbCommand cmd=new OleDbCommand(); cmd.CommandText="select * from emp"; cmd.Connection=con; cmd.Connection.Open(); OleDbDataReader dr=cmd.ExecuteReader(); DataGrid1.DataSource=dr; DataGrid1.DataBind(); cmd.Connection.Close(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Button2.Click += new System.EventHandler(this.Button2_Click); this.DataGrid2.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Cancel_Grid); this.DataGrid2.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Edit_Grid); this.DataGrid2.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Update_Grid); this.DataGrid2.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Delete_Grid); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button2_Click(object sender, System.EventArgs e) { foreach(DataGridItem objItem in DataGrid2.Items) { if (objItem.ItemType != ListItemType.Header && objItem.ItemType != ListItemType.Footer && objItem.ItemType != ListItemType.Pager) { if(((CheckBox)objItem.Cells[0].FindControl("cbSelected")).Checked == true) { OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]); OleDbCommand cmd=new OleDbCommand(); cmd.CommandText="DELETE from emp where empId=@empId"; cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[objItem.ItemIndex]; cmd.Connection=con; cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } } } BindData(DataGrid2); } private void Delete_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]); OleDbCommand cmd=new OleDbCommand(); cmd.CommandText="DELETE from emp where empId=@empId"; cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[e.Item.ItemIndex]; cmd.Connection=con; cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); DataGrid2.EditItemIndex=-1; BindData(DataGrid2); } private void Edit_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { DataGrid2.EditItemIndex = e.Item.ItemIndex; // Always bind the data so the datagrid can be displayed. BindData(DataGrid2); } private void Update_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]); OleDbCommand cmd=new OleDbCommand(); cmd.CommandText="UPDATE emp SET empName=@empName, salary=@salary, joiningDate=@joiningDate where empId=@empId"; cmd.Parameters.Add("@empName",OleDbType.Char).Value=((TextBox)e.Item.Cells[1].Controls[0]).Text; cmd.Parameters.Add("@salary",OleDbType.Numeric).Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; cmd.Parameters.Add("@joiningDate",OleDbType.Date).Value=((TextBox)e.Item.Cells[3].Controls[0]).Text; cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[e.Item.ItemIndex]; cmd.Connection=con; cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); DataGrid2.EditItemIndex=-1; BindData(DataGrid2); } private void Cancel_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { DataGrid2.EditItemIndex = -1; BindData(DataGrid2); } } } "Edit_and_Delete_Data/MultipleDeletionDatagrid.zip">Download MultipleDeletionDatagrid.zip - 22.7 KB
请记得使用语言下拉菜单设置代码片段的语言。
使用“var”按钮将变量或类名包裹在标签中,例如
this
。
关注点
在编写代码的过程中,你学到了什么有趣/好玩/令人恼火的东西吗? 你做了什么特别巧妙、疯狂或异想天开的事情吗?
历史
在此处保持您所做的任何更改或改进的实时更新。