如題﹕
C#怎樣知道改了dataset的哪些字段
環境﹕
一個datagridview,dataset,
現在用datagridview.datasource=dataset.tables[0].
然后用戶可以在程序中修改datagridview中的字段值或是直接新增記錄﹐都可以。
此時用datagridview2.datasource=dataset.GetChanges().Tables[0];就可以看到當前用戶改的哪些記錄﹐但光看datagridview2是看不出用戶改了哪些字段的﹐只知道用戶改了這個記錄或是新增了這個記錄。
我現在想問問﹕怎樣判斷用戶改了哪些具體的字段﹐ ﹖
明白我說的嗎﹖
舉個例子吧﹕
如﹕表1
name,code,unit
張三﹐a001,人資部
李四﹐a002,電腦部
好了﹐
我現在將第一條中的a001改成a009,則用datagridview2.datasource=dataset.GetChanges().Tables[0];就可以在datagridveiw2中看到如下的記錄﹕name,code,unit
張三﹐a009,人資部
但我怎么知道他是改的第二個字段呢》﹖
所以望大家多指點﹗﹗﹗﹗
萬分感謝﹗﹗﹗﹗
70分
C#怎樣知道改了dataset的哪些字段
環境﹕
一個datagridview,dataset,
現在用datagridview.datasource=dataset.tables[0].
然后用戶可以在程序中修改datagridview中的字段值或是直接新增記錄﹐都可以。
此時用datagridview2.datasource=dataset.GetChanges().Tables[0];就可以看到當前用戶改的哪些記錄﹐但光看datagridview2是看不出用戶改了哪些字段的﹐只知道用戶改了這個記錄或是新增了這個記錄。
我現在想問問﹕怎樣判斷用戶改了哪些具體的字段﹐ ﹖
明白我說的嗎﹖
舉個例子吧﹕
如﹕表1
name,code,unit
張三﹐a001,人資部
李四﹐a002,電腦部
好了﹐
我現在將第一條中的a001改成a009,則用datagridview2.datasource=dataset.GetChanges().Tables[0];就可以在datagridveiw2中看到如下的記錄﹕name,code,unit
張三﹐a009,人資部
但我怎么知道他是改的第二個字段呢》﹖
所以望大家多指點﹗﹗﹗﹗
萬分感謝﹗﹗﹗﹗
70分
解决方案 »
- C#能够开发出在安卓系统中运行的应用么?
- 请问如何从BindingSource控件获得其所绑定数据表的当前行?
- sql数据库里的触发器有何作用,如何使用!
- [ 新手提问 ]求CryptoStream的使用方法
- 请问visual studio 2003里的项目要怎么删?谢谢!
- C# 中如何播放GIF动画图片
- 关于Reflect的问题,急问
- 关于改写ParameterName的问题
- VS2010中调用MSSQL中带参数的存储过程,提示“找不到存储过程”
- web自定义控件关于datagrid的文体,大虾们帮帮忙,先在这里谢了
- 超级期待的东西,发布我封装的Socket,可以象Delphi那样非常简单的使用Socket了!
- comboBox
……
void Form1_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
MessageBox.Show(e.Column.ToString());
}
但是不要做数据绑定
当值改变时激发
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
事件在事件里面做循环,比较table 与datagridview就行了
DataTable.ColumnChanging 在 DataRow 中指定的 DataColumn 的值发生更改时发生。
// MSDN's DEMO for DataTable.ColumnChanged eventprivate static void DataTableColumnChanged()
{
DataTable custTable = new DataTable("Customers");
// add columns
custTable.Columns.Add("id", typeof(int));
custTable.Columns.Add("name", typeof(string));
custTable.Columns.Add("address", typeof(string)); // set PrimaryKey
custTable.Columns["id"].Unique = true;
custTable.PrimaryKey = new DataColumn[] { custTable.Columns["id"] }; // add a ColumnChanged event handler for the table.
custTable.ColumnChanged += new
DataColumnChangeEventHandler(Column_Changed );
// add ten rows
for(int id=1; id<=10; id++)
{
custTable.Rows.Add(
new object[] { id, string.Format("customer{0}", id),
string.Format("address{0}", id) });
} custTable.AcceptChanges(); // change the name column in all the rows
foreach(DataRow row in custTable.Rows )
{
row["name"] = string.Format("vip{0}", row["id"]);
}}private static void Column_Changed(object sender, DataColumnChangeEventArgs e )
{
Console.WriteLine("Column_Changed Event: name={0}; Column={1}; original name={2}",
e.Row["name"], e.Column.ColumnName, e.Row["name", DataRowVersion.Original]);
}
{
DataTable custTable = new DataTable("Customers");
// add columns
custTable.Columns.Add("id", typeof(int));
custTable.Columns.Add("name", typeof(string));
custTable.Columns.Add("address", typeof(string)); // set PrimaryKey
custTable.Columns[ "id" ].Unique = true;
custTable.PrimaryKey = new DataColumn[] { custTable.Columns["id"] }; // add a ColumnChanging event handler for the table.
custTable.ColumnChanging += new
DataColumnChangeEventHandler(Column_Changing );
// add ten rows
for(int id=1; id<=10; id++)
{
custTable.Rows.Add(
new object[] { id, string.Format(
"customer{0}", id), string.Format("address{0}", id) });
} custTable.AcceptChanges(); // change the name column in all the rows
foreach(DataRow row in custTable.Rows )
{
row["name"] = string.Format("vip{0}", row["id"]);
}}private static void Column_Changing(object sender,
DataColumnChangeEventArgs e )
{
Console.WriteLine(
"Column_Changing Event: name={0}; Column={1}; proposed name={2}",
e.Row["name"], e.Column.ColumnName, e.ProposedValue );
}