/*************DataGridView与BindingManagerBase配合使用************ * 简练的代码: * DataRowView drv = (DataRowView)myBind.Current; * DataRow dr = drv.Row; * 相关代码参考 * http://blog.csdn.net/greatverve/archive/2009/02/27/3941450.aspx ****************************************************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace DataApp { public partial class DataGridViewFrm : Form { private DataSet ds; private BindingManagerBase myBind; public DataGridViewFrm() { InitializeComponent(); } private void DataGridViewFrm_Load(object sender, EventArgs e) { ds = AppCode.DataAccess.GetDataSet("select * from workerInf", "workerInf"); //为普通控件绑定数据列 this.txtName.DataBindings.Add("Text", ds, "workerInf.name"); //如果想让DataGridView与BindingManagerBase同步,数据源必须是DataSet dgvShow.DataSource = ds;//用DataTable做数据源是无法同步的,ds.Tables["workerInf"] dgvShow.DataMember = "workerInf"; myBind = this.BindingContext[ds, "workerInf"]; } private void btnPrep_Click(object sender, EventArgs e) { myBind.Position += 1; } private void btnDelete_Click(object sender, EventArgs e) { DataRowView drv = (DataRowView)myBind.Current; //取得当前行 DataRow dr = drv.Row; //这里执行数据库更新,根据行值 MessageBox.Show(dr[0].ToString()); //更新DataSet dr.Delete(); } private void btnAdd_Click(object sender, EventArgs e) { //增加记录,无法通过BindingManagerBase取得NewRow //更新内存中数据 //ds.Tables["workerInf"].Rows[myBind.Position].BeginEdit(); DataRow dr = ds.Tables["workerInf"].NewRow(); dr["name"] = "hello"; dr["sex"] = "男"; ds.Tables["workerInf"].Rows.Add(dr); //ds.Tables["workerInf"].Rows[myBind.Position].EndEdit(); //ds.Tables["workerInf"].AcceptChanges(); } private void btnUpdate_Click(object sender, EventArgs e) { DataRowView drv = (DataRowView)myBind.Current; DataRow dr = drv.Row; //这里执行数据库更新,根据行值 //MessageBox.Show(dr[0].ToString()); //更新DataSet //不加Begin/End也行,这些多余的代码,应该是用在直接拖一个可视化的DataSet的时候才用. //dr.BeginEdit(); dr[1] = "hello"; //dr.EndEdit(); } } }