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


    见于好多人在CSDN上问如何在DataGrid中进行添加、删除和修改操作,我最近作了如下一个例子。

     

    首先,例子所用的数据库是SQL Server2000,数据库表格如下:

    字段名

    类型

    备注

    EmployeeID

    Int

    自增字段

    EmployeeName

    Varchar(20)

     

    Salary

    Int

     

    CellPhone

    Varchar(20)

     

    EmailAddress

    Varchar(20)

     

     

    程序的代码如下:

    //------------------------Datagrid Demo------------------------------------

    //-------------------------------------------------------------------------

    //---File:frmDataGridDemo.cs

    //---Description:The main form file to operate datagrid

    //---Author:Knight

    //---Date:Mar.17, 2006

    //-------------------------------------------------------------------------

    //----------------------{ Datagrid Demo }----------------------------------

    using System;

    using System.Drawing;

    using System.Collections;

    using System.ComponentModel;

    using System.Windows.Forms;

    using System.Data;

    using System.Data.SqlClient;

     

    namespace CSDataGrid

    {

        /// <summary>

        /// Summary description for frmDataGridDemo.

        /// </summary>

        public class frmDataGridDemo : System.Windows.Forms.Form

        {

            private System.Windows.Forms.DataGrid dtgUserInfo;

            private System.Windows.Forms.Button btnUpdate;

            private System.Windows.Forms.Button btnExit;

     

            protected SqlConnection sqlConn = new SqlConnection();

            protected SqlDataAdapter sqlDAdapter = null;

            protected DataSet sqlRecordSet = null;

     

            /// <summary>

            /// Required designer variable.

            /// </summary>

            private System.ComponentModel.Container components = null;

     

            public frmDataGridDemo()

            {

                //

                // Required for Windows Form Designer support

                //

                InitializeComponent();

     

                //

                // TODO: Add any constructor code after InitializeComponent call

                //

            }

     

            /// <summary>

            /// Clean up any resources being used.

            /// </summary>

            protected override void Dispose( bool disposing )

            {

                if( disposing )

                {

                    if (components != null)

                    {

                        components.Dispose();

                    }

                }

                base.Dispose( disposing );

            }

     

            #region Windows Form Designer generated code

            /// <summary>

            /// Required method for Designer support - do not modify

            /// the contents of this method with the code editor.

            /// </summary>

            private void InitializeComponent()

            {

                this.dtgUserInfo = new System.Windows.Forms.DataGrid();

                this.btnUpdate = new System.Windows.Forms.Button();

                this.btnExit = new System.Windows.Forms.Button();

                ((System.ComponentModel.ISupportInitialize)(this.dtgUserInfo)).BeginInit();

                this.SuspendLayout();

                //

                // dtgUserInfo

                //

                this.dtgUserInfo.DataMember = "";

                this.dtgUserInfo.HeaderForeColor = System.Drawing.SystemColors.ControlText;

                this.dtgUserInfo.Location = new System.Drawing.Point(8, 16);

                this.dtgUserInfo.Name = "dtgUserInfo";

                this.dtgUserInfo.Size = new System.Drawing.Size(528, 480);

                this.dtgUserInfo.TabIndex = 0;

                //

                // btnUpdate

                //

                this.btnUpdate.Location = new System.Drawing.Point(544, 16);

                this.btnUpdate.Name = "btnUpdate";

                this.btnUpdate.TabIndex = 1;

                this.btnUpdate.Text = "&Update";

                this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);

                //

                // btnExit

                //

                this.btnExit.Location = new System.Drawing.Point(544, 472);

                this.btnExit.Name = "btnExit";

                this.btnExit.TabIndex = 2;

                this.btnExit.Text = "E&xit";

                //

                // frmDataGridDemo

                //

                this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

                this.ClientSize = new System.Drawing.Size(634, 511);

                this.Controls.Add(this.btnExit);

                this.Controls.Add(this.btnUpdate);

                this.Controls.Add(this.dtgUserInfo);

                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;

                this.MaximizeBox = false;

                this.Name = "frmDataGridDemo";

                this.Text = "DataGrid Demo";

                this.Load += new System.EventHandler(this.frmDataGridDemo_Load);

                ((System.ComponentModel.ISupportInitialize)(this.dtgUserInfo)).EndInit();

                this.ResumeLayout(false);

     

            }

            #endregion

     

            /// <summary>

            /// The main entry point for the application.

            /// </summary>

            [STAThread]

            static void Main()

            {

                Application.Run(new frmDataGridDemo());

            }

     

            private void frmDataGridDemo_Load(object sender, System.EventArgs e)

            {

                //Set connection string

                sqlConn.ConnectionString = yourDBConnectionString;

     

                //Connect to DB

                if( ConnectDB() )

                {

                    //Bind data to datagrid

                    BindData();

                }

            }

     

            private void AddDGStyle()

            {

                DataGridTableStyle ts1 = new DataGridTableStyle();

     

                //specify the table from dataset (required step)

                ts1.MappingName = "EmployeeInfo";

                PropertyDescriptorCollection pdc = this.BindingContext

                    [sqlRecordSet, "EmployeeInfo"].GetItemProperties();

     

                DataGridColumnStyle TextCol = new DataGridTextBoxColumn( pdc["EmployeeID"], "i" );

                TextCol.MappingName = "EmployeeID";

                TextCol.HeaderText = "EmployeeID";

                TextCol.Width = 0;

                TextCol.ReadOnly = true;

                ts1.GridColumnStyles.Add(TextCol);

     

                TextCol = new DataGridTextBoxColumn();

                TextCol.MappingName = "EmployeeName";

                TextCol.HeaderText = "Employee Name";

                TextCol.Width = 100;

                ts1.GridColumnStyles.Add(TextCol);

               

                TextCol = new DataGridTextBoxColumn( pdc["Salary"], "i" );

                TextCol.MappingName = "Salary";

                TextCol.HeaderText = "Salary";

                TextCol.Width = 80;

                ts1.GridColumnStyles.Add(TextCol);

               

                TextCol = new DataGridTextBoxColumn();

                TextCol.MappingName = "CellPhone";

                TextCol.HeaderText = "Cell Phone";

                TextCol.Width = 80;

                ts1.GridColumnStyles.Add(TextCol);

     

                TextCol = new DataGridTextBoxColumn();

                TextCol.MappingName = "EmailAddress";

                TextCol.HeaderText = "Email Address";

                TextCol.Width = 100;

                ts1.GridColumnStyles.Add(TextCol);

     

                dtgUserInfo.TableStyles.Add(ts1);

     

            }

     

            private void SetDAdapterCommands()

            {

                string strQuery = "";

                SqlParameter sqlParm = null;

                // Create data adapter with select command

                strQuery = "SELECT EmployeeID, EmployeeName, Salary, CellPhone, EmailAddress "

                    + " FROM EmployeeInfo";

                sqlDAdapter = new SqlDataAdapter( strQuery, sqlConn );

               

                //Set update command

                strQuery = "Update EmployeeInfo SET "

                    + " EmployeeName = @EmployeeName, "

                    + " Salary = @Salary, "

                    + " CellPhone = @CellPhone, "

                    + " EmailAddress = @EmailAddress "

                    + " WHERE EmployeeID = @EmployeeID ";

     

                sqlDAdapter.UpdateCommand = new SqlCommand( strQuery, sqlConn );

                sqlDAdapter.UpdateCommand.Parameters.Add( "@EmployeeName", SqlDbType.VarChar,

                    20, "EmployeeName" );

                sqlParm = sqlDAdapter.UpdateCommand.Parameters.Add("@Salary", SqlDbType.Int);

                sqlParm.SourceColumn = "Salary";

                sqlParm.SourceVersion = DataRowVersion.Current;

                sqlDAdapter.UpdateCommand.Parameters.Add( "@CellPhone", SqlDbType.VarChar,

                    20, "CellPhone" );

                sqlDAdapter.UpdateCommand.Parameters.Add( "@EmailAddress", SqlDbType.VarChar,

                    20, "EmailAddress" );

                sqlParm = sqlDAdapter.UpdateCommand.Parameters.Add("@EmployeeID", SqlDbType.Int);

                sqlParm.SourceColumn = "EmployeeID";

                sqlParm.SourceVersion = DataRowVersion.Original;

     

                //Set insert command

                strQuery = "INSERT INTO EmployeeInfo ("

                    + " EmployeeName, "

                    + " Salary, "

                    + " CellPhone, "

                    + " EmailAddress) "

                    + " VALUES ( "

                    + " @EmployeeName, "

                    + " @Salary, "

                    + " @CellPhone, "

                    + " @EmailAddress)";

                sqlDAdapter.InsertCommand = new SqlCommand( strQuery, sqlConn );

                sqlDAdapter.InsertCommand.Parameters.Add( "@EmployeeName", SqlDbType.VarChar,

                    20, "EmployeeName" );

                sqlParm = sqlDAdapter.InsertCommand.Parameters.Add("@Salary", SqlDbType.Int);

                sqlParm.SourceColumn = "Salary";

                sqlParm.SourceVersion = DataRowVersion.Current;

                sqlDAdapter.InsertCommand.Parameters.Add( "@CellPhone", SqlDbType.VarChar,

                    20, "CellPhone" );

                sqlDAdapter.InsertCommand.Parameters.Add( "@EmailAddress", SqlDbType.VarChar,

                    20, "EmailAddress" );

     

                strQuery = "DELETE FROM EmployeeInfo "

                    + " WHERE EmployeeID = @EmployeeID ";

                sqlDAdapter.DeleteCommand = new SqlCommand( strQuery, sqlConn );

                sqlParm = sqlDAdapter.DeleteCommand.Parameters.Add("@EmployeeID", SqlDbType.Int);

                sqlParm.SourceColumn = "EmployeeID";

                sqlParm.SourceVersion = DataRowVersion.Original;

            }

     

            private void BindData()

            {

                SetDAdapterCommands();

     

                //Fill dataset

                sqlRecordSet = new DataSet();

                sqlDAdapter.Fill( sqlRecordSet, "EmployeeInfo" );

     

                //Bind datagrid with dataset

                dtgUserInfo.SetDataBinding( sqlRecordSet, "EmployeeInfo");

     

                //Add datagrid style

                AddDGStyle();

            }

     

            /// <summary>

            /// Connect to DB

            /// </summary>

            /// <returns>If connected, return True; else return False</returns>

            private bool ConnectDB()

            {

                //Check current connection's state

                try

                {

                    if(     sqlConn.State == ConnectionState.Closed

                        ||  sqlConn.State == ConnectionState.Broken )

                    {

                        //Connection is not available

                        sqlConn.Close();

                    }

                    else

                        //Connection is available

                        return true;

                }

                catch{};

     

                //Re-connect

                try

                {

                    sqlConn.Open();

                }

                catch(SqlException e)

                {

                    //Sql's exception

                    MessageBox.Show( e.Message );

                }

                catch(Exception e)

                {

                    //Other exception

                    MessageBox.Show( e.Message );

                }

     

                if(     sqlConn.State == ConnectionState.Closed

                    ||  sqlConn.State == ConnectionState.Broken )

                    //Connection is not available

                    return false;

                else

                    //Connection is available

                    return true;

            }

     

            private void btnUpdate_Click(object sender, System.EventArgs e)

            {

                sqlDAdapter.Update( sqlRecordSet, "EmployeeInfo" );

                sqlRecordSet.Tables["EmployeeInfo"].Rows.Clear();

                sqlDAdapter.Fill( sqlRecordSet, "EmployeeInfo" );

            }

     

        }

    }

     

           上面的代码有很多细节没有作处理,因此仅仅演示如何对DataGrid操作。

  • 相关阅读:
    Echarts
    递归
    svg(二)---半瓶子晃荡
    svg(一)
    angular --- s3core移动端项目(三)
    angular --- s3core移动端项目(二)
    angular --- s3core移动端项目
    当后台获取内容有标签时如何过滤---angular
    匿名函数的作用域
    Mybatis从浅入深(IDEA版通俗易懂)
  • 原文地址:https://www.cnblogs.com/top5/p/1988966.html
Copyright © 2020-2023  润新知