65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.08/5 (8投票s)

2007年3月15日

viewsIcon

96276

downloadIcon

2495

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

下载 MultipleDeletionDatagrid.zip - 22.7 KB

Screenshot - datagrid2.jpg

Screenshot - editGrid.jpg

引言

我发现一个常见的任务是创建一个具有多条删除选项的 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

关注点

在编写代码的过程中,你学到了什么有趣/好玩/令人恼火的东西吗? 你做了什么特别巧妙、疯狂或异想天开的事情吗?

历史

在此处保持您所做的任何更改或改进的实时更新。

© . All rights reserved.