我WinForm aplication,.Net framework 4.5
vs2012 and Sqlserver 2008 R2
。
在我的表单中,如果"BindingSource_CurrentItemChanged"
(用户插入新行),我会使用row.IsNew
添加新值
DataRowView row = (DataRowView) this.BindingSource.Current;
//if row is null then exit form method.
if(row==null)
return;
if(row.IsNew)
{
row["CreatedUserID"] = this.UserID;
row["ModifiedUserID"] = this.UserID;
}
这成功了。
然后我想编写一个方法,当用户编辑一个欲望字段值时,我的代码会自动将“UserID”放入ModifiedUserID(有些事情就像这样):
... row["ModifiedUserID"] = this.UserID;
我在BindongSource_ListChanged
中使用了以下代码,但收到错误:
if (e.ListChangedType == ListChangedType.ItemChanged)
{
DataRowView row = (DataRowView)this.ApplicationFilesBindingSource.Current;
if (row == null)
return;
row["ModifiedUserID"] = this.ID;
}
错误: DataTable内部索引已损坏:'5'。
之后如果在BindingSource_CurrentItemChanged
if (row.Row.RowState == DataRowState.Modified)
row["ModifiedUserID"] = User.User.Current.ID;
此代码也引发了同样的异常:
错误: DataTable内部索引已损坏:'5'。
我将此代码更改为"ModifiedUserID"
到this.UserID?
BindingSource
或DataGridView
?