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

如何在DataGrid中进行添加、删除和修改操作
如何在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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130593/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-130593/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值