如何使用Datagridview绑定源C#更新SQL Server数据库
我正在用C#编写Winforms应用程序,使用户可以使用datagridview编辑和更新数据库。
问题是,我无法让它发挥作用。 我设法实现的唯一目标是更新datagridview显示的内容,但是当我进入数据库表时,数据没有变化。 我搜索了很多网站讨论这个问题,但没有什么对我有用。
到目前为止我尝试过的事情:
这是我的代码:
public Form1() { InitializeComponent(); GetData("SELECT * FROM Table1"); } void GetData(string selectCommand) { SqlConnection conn = new SqlConnection(Properties.Settings.Default.NewDBTESTConnectionString); dataAdapter = new SqlDataAdapter(selectCommand, conn); commandBuilder = new SqlCommandBuilder(dataAdapter); table = new DataTable(); dataAdapter.Fill(table); bindingSource1.DataSource = table; dataGridView1.DataSource = bindingSource1; } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { dataAdapter.Update((DataTable)bindingSource1.DataSource); }
在不调用bindingSource1.EndEdit
您的基础DataTable看不到任何更改,因此Update命令无需更新。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { bindingSource1.EndEdit(); DataTable dt = (DataTable)bindingSource1.DataSource; // Just for test.... Try this with or without the EndEdit.... DataTable changedTable = dt.GetChanges(); Console.WriteLine(changedTable.Rows.Count); int rowsUpdated = da.Update(dt); Console.WriteLine(rowsUpdated); }
你可以有一个保存或更新按钮来执行这样的代码:
bindingSource1.EndEdit(); DataTable dt = (DataTable)bindingSource1.DataSource; dataAdaper.Update(dt);
您将保存所做的所有更改,但如果您先对datagridview列进行排序,然后更改数据,然后运行上面的保存代码,您将错过一条记录,排序前的第一条记录。 要修复它,你必须将它排序然后保存它们。 如果您知道要排序的列,则需要在将数据加载到datagridview时对其进行排序,这是最好的方法。
贾庄
上述就是C#学习教程:如何使用Datagridview绑定源C#更新SQL Server数据库分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1034047.html