c# DataSet.Tables [0] .GetChanges ();总是返回所有行
本文关键字:返回 Tables DataSet GetChanges | 更新日期: 2023-09-27 18:09:07
我将DataGridView
从text file
绑定到C# WinForms
,如下所示
onPageLoad
DataTable table = new DataTable();
table.Columns.Add(Column0);
table.Columns.Add(Column1);
table.Columns.Add(Column2);
table.Columns.Add(Column3);
using (StreamReader sr = new StreamReader(Environment.CurrentDirectory + @"/data.txt"))
{
while (!sr.EndOfStream)
{
string[] parts = sr.ReadLine().Split(',');
DeviceIDCounter = DeviceIDCounter + 1;
table.Rows.Add(DeviceIDCounter, parts[0], parts[1], parts[2]);
}
}
dataSet = new DataSet();
dataSet.Clear();
dataSet.Tables.Add(table);
dataGridView1.DataSource = dataSet.Tables[0];
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
DeviceIDCounter = 0;
现在在dataGridView1
中更新单行时,它总是返回所有行
onButtonClick更新行后
DataTable dtRecordsUpdated = dataSet.Tables[0].GetChanges(); //always returning total rows
if (dtRecordsUpdated != null && dtRecordsUpdated.Rows.Count > 0)
{
Cursor.Current = Cursors.WaitCursor;
Cursor.Current = Cursors.Default;
}
else
{}
另一方面,我的另一个函数,即从SQLServer
绑定DataGridView
,正按预期工作。
谢谢
你需要更新到DGV的数据源后,你做了一些改变,像这样:
((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();
数据表。GetChanges方法:获取数据表的副本,其中包含自加载或上次调用AcceptChanges以来对它所做的所有更改。
- 如果您需要捕获已更改的内容,您需要AcceptChanges
- 你得到所有的行,因为dataTable认为所有的行都有New。因为你从不接受更改
- PS:没有必要创建数据集,如果你只是传递数据表给DataGridView