您的位置:首页 > 其它

如何在DataGrid中进行添加、删除和修改操作

2006-03-29 14:14 1041 查看
见于好多人在CSDN上问如何在DataGrid中进行添加、删除和修改操作,我最近作了如下一个例子。
 
首先,例子所用的数据库是SQL Server2000,数据库表格如下:

[align=center]字段名[/align]
[align=center]类型[/align]
[align=center]备注[/align]
EmployeeID
Int
自增字段
EmployeeName
Varchar(20)
 
Salary
Int
 
CellPhone
Varchar(20)
 
EmailAddress
Varchar(20)
 
 
程序的代码如下:
[align=left]//------------------------Datagrid Demo------------------------------------[/align]
[align=left]//-------------------------------------------------------------------------[/align]
[align=left]//---File:frmDataGridDemo.cs[/align]
[align=left]//---Description:The main form file to operate datagrid [/align]
[align=left]//---Author:Knight[/align]
[align=left]//---Date:Mar.17, 2006[/align]
[align=left]//-------------------------------------------------------------------------[/align]
[align=left]//----------------------{ Datagrid Demo }----------------------------------[/align]
using System;<
4000
/div>
[align=left]using System.Drawing;[/align]
[align=left]using System.Collections;[/align]
[align=left]using System.ComponentModel;[/align]
[align=left]using System.Windows.Forms;[/align]
[align=left]using System.Data;[/align]
[align=left]using System.Data.SqlClient;[/align]
[align=left] [/align]
[align=left]namespace CSDataGrid[/align]
[align=left]{[/align]
[align=left]    ///<summary>[/align]
[align=left]    /// Summary description for frmDataGridDemo.[/align]
[align=left]    ///</summary>[/align]
[align=left]    public class frmDataGridDemo : System.Windows.Forms.Form[/align]
[align=left]    {[/align]
[align=left]        private System.Windows.Forms.DataGrid dtgUserInfo;[/align]
[align=left]        private System.Windows.Forms.Button btnUpdate;[/align]
[align=left]        private System.Windows.Forms.Button btnExit;[/align]
[align=left] [/align]
[align=left]        protected SqlConnection sqlConn = new SqlConnection();[/align]
[align=left]        protected SqlDataAdapter sqlDAdapter = null;[/align]
[align=left]        protected DataSet sqlRecordSet = null;[/align]
[align=left] [/align]
[align=left]        ///<summary>[/align]
[align=left]        /// Required designer variable.[/align]
[align=left]        ///</summary>[/align]
[align=left]        private System.ComponentModel.Container components = null;[/align]
[align=left] [/align]
[align=left]        public frmDataGridDemo()[/align]
[align=left]        {[/align]
[align=left]            //[/align]
[align=left]            // Required for Windows Form Designer support[/align]
[align=left]            //[/align]
[align=left]            InitializeComponent();[/align]
[align=left] [/align]
[align=left]            //[/align]
[align=left]            // TODO: Add any constructor code after InitializeComponent call[/align]
[align=left]            //[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        ///<summary>[/align]
[align=left]        /// Clean up any resources being used.[/align]
[align=left]        ///</summary>[/align]
[align=left]        protected override void Dispose( bool disposing )[/align]
[align=left]        {[/align]
[align=left]            if( disposing )[/align]
[align=left]            {[/align]
[align=left]                if (components != null) [/align]
[align=left]                {[/align]
[align=left]                    components.Dispose();[/align]
[align=left]                }[/align]
[align=left]            }[/align]
[align=left]            base.Dispose( disposing );[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        #region Windows Form Designer generated code[/align]
[align=left]        ///<summary>[/align]
[align=left]        /// Required method for Designer support - do not modify[/align]
[align=left]        /// the contents of this method with the code editor.[/align]
[align=left]        ///</summary>[/align]
[align=left]        private void InitializeComponent()[/align]
[align=left]        {[/align]
[align=left]            this.dtgUserInfo = new System.Windows.Forms.DataGrid();[/align]
[align=left]            this.btnUpdate = new System.Windows.Forms.Button();[/align]
[align=left]            this.btnExit = new System.Windows.Forms.Button();[/align]
[align=left]            ((System.ComponentModel.ISupportInitialize)(this.dtgUserInfo)).BeginInit();[/align]
[align=left]            this.SuspendLayout();[/align]
[align=left]            // [/align]
[align=left]            // dtgUserInfo[/align]
[align=left]            // [/align]
[align=left]            this.dtgUserInfo.DataMember = "";[/align]
[align=left]            this.dtgUserInfo.HeaderForeColor = System.Drawing.SystemColors.ControlText;[/align]
[align=left]            this.dtgUserInfo.Location = new System.Drawing.Point(8, 16);[/align]
[align=left]            this.dtgUserInfo.Name = "dtgUserInfo";[/align]
[align=left]            this.dtgUserInfo.Size = new System.Drawing.Size(528, 480);[/align]
[align=left]            this.dtgUserInfo.TabIndex = 0;[/align]
[align=left]            // [/align]
[align=left]            // btnUpdate[/align]
[align=left]            // [/align]
[align=left]            this.btnUpdate.Location = new System.Drawing.Point(544, 16);[/align]
[align=left]            this.btnUpdate.Name = "btnUpdate";[/align]
[align=left]            this.btnUpdate.TabIndex = 1;[/align]
[align=left]            this.btnUpdate.Text = "&Update";[/align]
[align=left]            this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);[/align]
[align=left]            // [/align]
[align=left]            // btnExit[/align]
[align=left]            // [/align]
[align=left]            this.btnExit.Location = new System.Drawing.Point(544, 472);[/align]
[align=left]            this.btnExit.Name = "btnExit";[/align]
[align=left]            this.btnExit.TabIndex = 2;[/align]
[align=left]            this.btnExit.Text = "E&xit";[/align]
[align=left]            // [/align]
[align=left]            // frmDataGridDemo[/align]
[align=left]            // [/align]
[align=left]            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);[/align]
[align=left]            this.ClientSize = new System.Drawing.Size(634, 511);[/align]
[align=left]            this.Controls.Add(this.btnExit);[/align]
[align=left]            this.Controls.Add(this.btnUpdate);[/align]
[align=left]            this.Controls.Add(this.dtgUserInfo);[/align]
[align=left]            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;[/align]
[align=left]            this.MaximizeBox = false;[/align]
[align=left]            this.Name = "frmDataGridDemo";[/align]
[align=left]            this.Text = "DataGrid Demo";[/align]
[align=left]            this.Load += new System.EventHandler(this.frmDataGridDemo_Load);[/align]
[align=left]            ((System.ComponentModel.ISupportInitialize)(this.dtgUserInfo)).EndInit();[/align]
[align=left]            this.ResumeLayout(false);[/align]
[align=left] [/align]
[align=left]        }[/align]
[align=left]        #endregion[/align]
[align=left] [/align]
[align=left]        ///<summary>[/align]
 
f8d8
       /// The main entry point for the application.
[align=left]        ///</summary>[/align]
[align=left]        [STAThread][/align]
[align=left]        static void Main() [/align]
[align=left]        {[/align]
[align=left]            Application.Run(new frmDataGridDemo());[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        private void frmDataGridDemo_Load(object sender, System.EventArgs e)[/align]
[align=left]        {[/align]
[align=left]            //Set connection string [/align]
[align=left]            sqlConn.ConnectionString = yourDBConnectionString;[/align]
[align=left] [/align]
[align=left]            //Connect to DB[/align]
[align=left]            if( ConnectDB() )[/align]
[align=left]            {[/align]
[align=left]                //Bind data to datagrid[/align]
[align=left]                BindData();[/align]
[align=left]            }[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        private void AddDGStyle()[/align]
[align=left]        {[/align]
[align=left]            DataGridTableStyle ts1 = new DataGridTableStyle(); [/align]
[align=left] [/align]
[align=left]            //specify the table from dataset (required step) [/align]
[align=left]            ts1.MappingName = "EmployeeInfo"; [/align]
[align=left]            PropertyDescriptorCollection pdc = this.BindingContext[/align]
[align=left]                [sqlRecordSet, "EmployeeInfo"].GetItemProperties();[/align]
[align=left] [/align]
[align=left]            DataGridColumnStyle TextCol = new DataGridTextBoxColumn( pdc["EmployeeID"], "i" );[/align]
[align=left]            TextCol.MappingName = "EmployeeID"; [/align]
[align=left]            TextCol.HeaderText = "EmployeeID"; [/align]
[align=left]            TextCol.Width = 0; [/align]
[align=left]            TextCol.ReadOnly = true;[/align]
[align=left]            ts1.GridColumnStyles.Add(TextCol); [/align]
[align=left] [/align]
[align=left]            TextCol = new DataGridTextBoxColumn(); [/align]
[align=left]            TextCol.MappingName = "EmployeeName"; [/align]
[align=left]            TextCol.HeaderText = "Employee Name"; [/align]
[align=left]            TextCol.Width = 100; [/align]
[align=left]            ts1.GridColumnStyles.Add(TextCol); [/align]
[align=left]            [/align]
[align=left]            TextCol = new DataGridTextBoxColumn( pdc["Salary"], "i" );[/align]
[align=left]            TextCol.MappingName = "Salary"; [/align]
[align=left]            TextCol.HeaderText = "Salary"; [/align]
[align=left]            TextCol.Width = 80; [/align]
[align=left]            ts1.GridColumnStyles.Add(TextCol); [/align]
[align=left]            [/align]
[align=left]            TextCol = new DataGridTextBoxColumn(); [/align]
[align=left]            TextCol.MappingName = "CellPhone"; [/align]
[align=left]            TextCol.HeaderText = "Cell Phone"; [/align]
[align=left]            TextCol.Width = 80; [/align]
[align=left]            ts1.GridColumnStyles.Add(TextCol); [/align]
[align=left] [/align]
[align=left]            TextCol = new DataGridTextBoxColumn(); [/align]
[align=left]            TextCol.MappingName = "EmailAddress"; [/align]
[align=left]            TextCol.HeaderText = "Email Address"; [/align]
[align=left]            TextCol.Width = 100; [/align]
[align=left]            ts1.GridColumnStyles.Add(TextCol); [/align]
[align=left] [/align]
[align=left]            dtgUserInfo.TableStyles.Add(ts1);[/align]
[align=left] [/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        private void SetDAdapterCommands()[/align]
[align=left]        {[/align]
[align=left]            string strQuery = "";[/align]
[align=left]            SqlParameter sqlParm = null;[/align]
[align=left]            // Create data adapter with select command[/align]
[align=left]            strQuery = "SELECT EmployeeID, EmployeeName, Salary, CellPhone, EmailAddress "[/align]
[align=left]                + " FROM EmployeeInfo";[/align]
[align=left]            sqlDAdapter = new SqlDataAdapter( strQuery, sqlConn );[/align]
[align=left]            [/align]
[align=left]            //Set update command[/align]
[align=left]            strQuery = "Update EmployeeInfo SET "[/align]
[align=left]                + " EmployeeName = @EmployeeName, "[/align]
[align=left]                + " Salary = @Salary, "[/align]
[align=left]                + " CellPhone = @CellPhone, "[/align]
[align=left]                + " EmailAddress = @EmailAddress "[/align]
[align=left]                + " WHERE EmployeeID = @EmployeeID ";[/align]
[align=left] [/align]
[align=left]            sqlDAdapter.UpdateCommand = new SqlCommand( strQuery, sqlConn );[/align]
[align=left]            sqlDAdapter.UpdateCommand.Parameters.Add( "@EmployeeName", SqlDbType.VarChar,[/align]
[align=left]                20, "EmployeeName" );[/align]
[align=left]            sqlParm = sqlDAdapter.UpdateCommand.Parameters.Add("@Salary", SqlDbType.Int);[/align]
[align=left]            sqlParm.SourceColumn = "Salary";[/align]
[align=left]            sqlParm.SourceVersion = DataRowVersion.Current;[/align]
[align=left]            sqlDAdapter.UpdateCommand.Parameters.Add( "@CellPhone", SqlDbType.VarChar,[/align]
[align=left]                20, "CellPhone" );[/align]
[align=left]            sqlDAdapter.UpdateCommand.Parameters.Add( "@EmailAddress", SqlDbType.VarChar,[/align]
[align=left]                20, "EmailAddress" );[/align]
[align=left]            sqlParm = sqlDAdapter.UpdateCommand.Parameters.Add("@EmployeeID", SqlDbType.Int);[/align]
[align=left]            sqlParm.SourceColumn = "EmployeeID";[/align]
[align=left]            sqlParm.SourceVersion = DataRowVersion.Original;[/align]
[align=left] [/align]
[align=left]            //Set insert command[/align]
[align=left]            strQuery = "INSERT INTO EmployeeInfo ("[/align]
[align=left]                + " EmployeeName, "[/align]
[align=left]                + " Salary, "[/align]
[align=left]                + " CellPhone, "[/align]
[align=left]                + " EmailAddress) "[/align]
[align=left]                + " VALUES ( "[/align]
[align=left]                + " @EmployeeName, "[/align]
[align=left]                + " @Salary, "[/align]
[align=left]                + " @CellPhone, "[/align]
[align=left]                + " @EmailAddress)";[/align]
[align=left]            sqlDAdapter.InsertCommand = new SqlCommand( strQuery, sqlConn );[/align]
[align=left]            sqlDAdapter.InsertCommand.Parameters.Add( "@EmployeeName", SqlDbType.VarChar,[/align]
[align=left]                20, "EmployeeName" );[/align]
[align=left]            sqlParm = sqlDAdapter.InsertCommand.Parameters.Add("@Salary", SqlDbType.Int);[/align]
[align=left]            sqlParm.SourceColumn = "Salary";[/align]
[align=left]            sqlParm.SourceVersion = DataRowVersion.Current;[/align]
[align=left]            sqlDAdapter.InsertCommand.Parameters.Add( "@CellPhone", SqlDbType.VarChar,[/align]
[align=left]                20, "CellPhone" );[/align]
[align=left]            sqlDAdapter.InsertCommand.Parameters.Add( "@EmailAddress", SqlDbType.VarChar,[/align]
[align=left]                20, "EmailAddress" );[/align]
[align=left] [/align]
[align=left]            strQuery = "DELETE FROM EmployeeInfo "[/align]
[align=left]                + " WHERE EmployeeID = @EmployeeID ";[/align]
[align=left]            sqlDAdapter.DeleteCommand = new SqlCommand( strQuery, sqlConn );[/align]
[align=left]            sqlParm = sqlDAdapter.DeleteCommand.Parameters.Add("@EmployeeID", SqlDbType.Int);[/align]
[align=left]            sqlParm.SourceColumn = "EmployeeID";[/align]
[align=left]            sqlParm.SourceVersion = DataRowVersion.Original;[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        private void BindData()[/align]
[align=left]        {[/align]
[align=left]            SetDAdapterCommands();[/align]
[align=left] [/align]
[align=left]            //Fill dataset[/align]
[align=left]            sqlRecordSet = new DataSet();[/align]
[align=left]            sqlDAdapter.Fill( sqlRecordSet, "EmployeeInfo" );[/align]
[align=left] [/align]
[align=left]            //Bind datagrid with dataset[/align]
[align=left]            dtgUserInfo.SetDataBinding( sqlRecordSet, "EmployeeInfo");[/align]
[align=left] [/align]
[align=left]            //Add datagrid style[/align]
[align=left]            AddDGStyle();[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        ///<summary>[/align]
[align=left]        /// Connect to DB[/align]
[align=left]        ///</summary>[/align]
[align=left]        ///<returns>If connected, return True; else return False</returns>[/align]
[align=left]        private bool ConnectDB()[/align]
[align=left]        {[/align]
[align=left]            //Check current connection's state[/align]
[align=left]            try[/align]
[align=left]            {[/align]
[align=left]                if(     sqlConn.State == ConnectionState.Closed[/align]
[align=left]                    || sqlConn.State == ConnectionState.Broken )[/align]
[align=left]                {[/align]
[align=left]                    //Connection is not available[/align]
[align=left]                    sqlConn.Close();[/align]
[align=left]                }[/align]
[align=left]                else[/align]
[align=left]                    //Connection is available[/align]
[align=left]                    return true;[/align]
[align=left]            }[/align]
[align=left]            catch{};[/align]
[align=left] [/align]
[align=left]            //Re-connect[/align]
[align=left]            try [/align]
[align=left]            {[/align]
[align=left]                sqlConn.Open();[/align]
[align=left]            }[/align]
[align=left]            catch(SqlException e) [/align]
[align=left]            {[/align]
[align=left]                //Sql's exception[/align]
[align=left]                MessageBox.Show( e.Message );[/align]
[align=left]            }[/align]
[align=left]            catch(Exception e)[/align]
[align=left]            {[/align]
[align=left]                //Other exception[/align]
[align=left]                MessageBox.Show( e.Message );[/align]
[align=left]            }[/align]
[align=left] [/align]
[align=left]            if(     sqlConn.State == ConnectionState.Closed[/align]
[align=left]                || sqlConn.State == ConnectionState.Broken )[/align]
[align=left]                //Connection is not available[/align]
[align=left]                return false;[/align]
[align=left]            else[/align]
[align=left]                //Connection is available[/align]
[align=left]                return true;[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]        private void btnUpdate_Click(object sender, System.EventArgs e)[/align]
[align=left]        {[/align]
[align=left]            sqlDAdapter.Update( sqlRecordSet, "EmployeeInfo" );[/align]
[align=left]            sqlRecordSet.Tables["EmployeeInfo"].Rows.Clear();[/align]
[align=left]            sqlDAdapter.Fill( sqlRecordSet, "EmployeeInfo" );[/align]
[align=left]        }[/align]
[align=left] [/align]
[align=left]    }[/align]
[align=left]}[/align]
 
       上面的代码有很多细节没有作处理,因此仅仅演示如何对DataGrid操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息