我有一个数据表,当我更改(添加,修改..ect)时,它不会反射(reflect)在绑定(bind)到该数据表的数据网格上。
ItemsSource="{Binding TableData,Mode=TwoWay,IsAsync=True}"
多数民众赞成在绑定(bind)^
现在,当我设置RowError时
TableData.Rows[x].RowError = ex.Message;
HasError设置为true ...但是DataGrid不能反射(reflect)这一点(我有一种样式,当出现错误时会标记为红色)
注意:我的更改没有更多地反射(reflect)在设置ErrorMessages之后,我还尝试在ViewModel中添加行,并且添加的行也不会得到反射(reflect)。
关于数据表:
它没有设置的列或任何内容,它会影响用户选择的所选数据库表。
最佳答案
绑定(bind)到DataTable
无效。您需要先将DataTable
转换为ObservableCollection<>
。从here:
public void ConvertDataTable( DataTable dt )
{
DataList = new ObservableCollection<ProjectWorkHours>();
//Scan and arrange data into ObservableCollection
int UserID = 0;
if ( dt.Rows.Count >0 )
{
UserID = int.Parse( dt.Rows[0]["UserID"].ToString() );
//Distill project id list
List<int> ProjectIDList = GetProjectIDList( dt );
for ( int i = 0 ; i < ProjectIDList.Count; i ++ )
{
int ProjectID= ProjectIDList[i];
//Get WorkRecord
int[] MyWorkRecord = GetWorkRecord(dt, ProjectID);
ProjectWorkHours newProjectWorkHours = new ProjectWorkHours(UserID,ProjectID,MyWorkRecord);
DataList.Add( newProjectWorkHours);
}
}
}
该链接提供了使用数据库和使用绑定(bind)的更完整示例。
关于wpf - 编辑到动态DataTable,而不在DataGrid中更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8838492/