如何在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 description for frmDataGridDemo. /// 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; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public frmDataGridDemo() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// 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 /// /// The main entry point for the application. /// [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(); } /// /// Connect to DB /// /// If connected, return True; else return False 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操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值