|
以下是代码片段: //DataGridViewDemo 类代码如下
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace C15Demo { public partial class DataGridViewDemo : Form { //全局变量 private SqlDataAdapter adapter = null; private DataTable dt = null; public DataGridViewDemo() { InitializeComponent(); } /// <summary> /// 初始化SQLDataAdapter类添加对数据表的增删改操作 /// </summary> private void InitAdapter() { SqlConnection connection = new SqlConnection(); connection.ConnectionString = "Persist Security Info=false;Integrated Security=SSPI;Initial Catalog=Northwind;server=(local)"; adapter = new SqlDataAdapter("select ProductID,ProductName,UnitPrice,Discontinued from Products", connection); adapter.FillLoadOption = LoadOption.OverwriteChanges; //添加修改命令 SqlCommand UpdataCommand = new SqlCommand(); UpdataCommand.Connection = connection; UpdataCommand.CommandText = "Update Products set ProductName = @ProductName,UnitPrice=@UnitPrice,Discontinued = @Discontinued where ProductID=@Productid "; UpdataCommand.Parameters.Add("@ProductID", SqlDbType.Int, 4, "ProductID"); UpdataCommand.Parameters.Add("@ProductName", SqlDbType.VarChar, 50, "ProductName"); UpdataCommand.Parameters.Add("@UnitPrice", SqlDbType.Money, 20, "UnitPrice"); UpdataCommand.Parameters.Add("@Discontinued", SqlDbType.Bit, 1, "Discontinued"); adapter.UpdateCommand = UpdataCommand; //添加新增 SqlCommand InsertCommand = new SqlCommand(); InsertCommand.Connection = connection; InsertCommand.CommandText = "Insert into Products (ProductName,UnitPrice,Discontinued)values(@ProductName,@UnitPrice,@Discontinued) "; InsertCommand.Parameters.Add("@ProductName", SqlDbType.VarChar, 50, "ProductName"); InsertCommand.Parameters.Add("@UnitPrice", SqlDbType.Money, 20, "UnitPrice"); InsertCommand.Parameters.Add("@Discontinued", SqlDbType.Bit, 1, "Discontinued"); adapter.InsertCommand = InsertCommand; //添加删除 SqlCommand DeleteCommand = new SqlCommand(); DeleteCommand.Connection = connection; DeleteCommand.CommandText = "Delete Products where ProductID=@ProductID "; DeleteCommand.Parameters.Add("@ProductID", SqlDbType.Int, 4, "ProductID"); adapter.DeleteCommand = DeleteCommand;
} /// <summary> /// 初始化DataGridView并绑定列,给DataGridView添加右键菜单 /// </summary> /// <param name="dataGridView">DataGrivView控件</param> private void InitDataGridView(DataGridView dataGridView) { dataGridView.AutoGenerateColumns = false; dataGridView.AllowUserToAddRows = false ; dataGridView.AllowUserToDeleteRows = false ; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridView.EditMode = DataGridViewEditMode.EditOnEnter; dataGridView.MultiSelect = false; dataGridView.ScrollBars = ScrollBars.Vertical; dataGridView.VirtualMode = true; //添加列 DataGridViewTextBoxColumn Column1 = new DataGridViewTextBoxColumn(); Column1.DataPropertyName = "ProductID"; Column1.HeaderText = "产品 ID"; Column1.Name = "Column1"; //Column1.ReadOnly = true; DataGridViewTextBoxColumn Column2 = new DataGridViewTextBoxColumn(); Column2.DataPropertyName = "ProductName"; Column2.HeaderText = "产品名称"; Column2.Name = "Column2"; Column2.Width = 165; DataGridViewTextBoxColumn Column3 = new DataGridViewTextBoxColumn(); Column3.DataPropertyName = "UnitPrice"; Column3.HeaderText = "价格"; Column3.Name = "Column3"; DataGridViewCheckBoxColumn Column4 = new DataGridViewCheckBoxColumn(); Column4.DataPropertyName = "Discontinued"; Column4.HeaderText = "是否使用"; Column4.Name = "Column4";
dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { Column1, Column2, Column3 ,Column4 }); //添加右键菜单 ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); contextMenuStrip.ShowCheckMargin = false; contextMenuStrip.ShowImageMargin = false; contextMenuStrip.ShowItemToolTips = true; contextMenuStrip.TextDirection = ToolStripTextDirection.Horizontal; contextMenuStrip.Opening += new CancelEventHandler(contextMenuStrip_Opening); dataGridView.ContextMenuStrip = contextMenuStrip; dataGridView.CurrentCellChanged += new EventHandler(dataGridView_CurrentCellChanged); } /// <summary> /// 右键菜单委拖的Opening事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param>
void contextMenuStrip_Opening(object sender, CancelEventArgs e) { //throw new NotImplementedException(); ContextMenuStrip contextMenuStrip = sender as ContextMenuStrip; if (contextMenuStrip != null) { //判断是否有菜单项,如果没有就添加 if (contextMenuStrip.Items.Count == 0) { ToolStripMenuItem addMenuItem = new ToolStripMenuItem(); addMenuItem.Text = "添加"; //addMenuItem.ImageIndex = 0 //添加图片 //将菜单单击事件委托 addMenuItem.Click += new EventHandler(addMenuItem_Click); ToolStripMenuItem deleteMenuItem = new ToolStripMenuItem(); deleteMenuItem.Text = "删除"; deleteMenuItem.Click += new EventHandler(deleteMenuItem_Click); ToolStripMenuItem insertMenuItem = new ToolStripMenuItem(); insertMenuItem.Text = "插入"; insertMenuItem.Click += new EventHandler(insertMenuItem_Click); contextMenuStrip.Items.Add(addMenuItem); contextMenuStrip.Items.Add(deleteMenuItem); contextMenuStrip.Items.Add(insertMenuItem); } } } /// <summary> /// 插入菜单的委拖事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void insertMenuItem_Click(object sender, EventArgs e) { //throw new NotImplementedException(); //throw new NotImplementedException(); ToolStripMenuItem toolStripMenuItem = sender as ToolStripMenuItem; ContextMenuStrip contextMenuStrip = toolStripMenuItem.Owner as ContextMenuStrip; if (contextMenuStrip != null) { //获取目标控件 DataGridView dataGridView = contextMenuStrip.SourceControl as DataGridView; if (dataGridView.CurrentRow.Index > 0) { //因为不能直接在dataGridView1上添加一个空行,所以给dt数据源添加一个空行然后重新绑定 DataRow dr = dt.NewRow (); dt.Rows.InsertAt (dr,dataGridView.CurrentRow.Index ); dataGridView.DataSource = dt; } } }
void deleteMenuItem_Click(object sender, EventArgs e) { //throw new NotImplementedException(); ToolStripMenuItem toolStripMenuItem = sender as ToolStripMenuItem; ContextMenuStrip contextMenuStrip = toolStripMenuItem.Owner as ContextMenuStrip; if (contextMenuStrip != null) { //获取目标控件 DataGridView dataGridView = contextMenuStrip.SourceControl as DataGridView; if (dataGridView.CurrentRow.Index > 0) { dataGridView.Rows.RemoveAt(dataGridView.CurrentRow.Index); } } } /// <summary> /// 添加菜单的委拖事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void addMenuItem_Click(object sender, EventArgs e) { //throw new NotImplementedException(); ToolStripMenuItem toolStripMenuItem = sender as ToolStripMenuItem; ContextMenuStrip contextMenuStrip = toolStripMenuItem.Owner as ContextMenuStrip; if (contextMenuStrip != null) { //获取目标控件 DataGridView dataGridView = contextMenuStrip.SourceControl as DataGridView; //dataGridView.Rows.Add(); //因为不能直接在dataGridView1上添加一个空行,所以给dt数据源添加一个空行然后重新绑定 DataRow dr = dt.NewRow(); dt.Rows.Add(dr); dataGridView.DataSource = dt; } } /// <summary> /// 删除菜单的委拖事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void dataGridView_CurrentCellChanged(object sender, EventArgs e) { //throw new NotImplementedException(); if (this.dataGridView1.CurrentCell != null) { this.txtContent.Text = this.dataGridView1.CurrentCell.Value.ToString(); } } /// <summary> /// 保存按钮的单击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { try { adapter.Update(dt); MessageBox.Show("更新成功!"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <summary> /// 窗口控件加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DataGridViewDemo_Load(object sender, EventArgs e) { //初始化Adapter全局变量 this.InitAdapter(); //初始化dataGridView1控件 this.InitDataGridView(dataGridView1); dt = new DataTable(); try { //获取数据并填充到DataTable adapter.Fill(dt); } catch (Exception ex) { MessageBox.Show(ex.Message); } //给dataGridView1控件绑定数据源 this.dataGridView1.DataSource = dt; } } } |