2012-01-12 109 views
2

我有一个DataTable,当我改变(添加,修改..ect)它不会反映DataGrid绑定到DataTable。编辑动态DataTable不更新DataGrid

ItemsSource="{Binding TableData,Mode=TwoWay,IsAsync=True}" 

那绑定^

现在,当我设置RowError

TableData.Rows[x].RowError = ex.Message; 

HasError被设置为true ...但DataGrid中没有反映这一点(我有一个风格标志一排红色时出现错误)

注意:我的更改没有反映在更多的设置ErrorMessages,我也试着在ViewModel中添加行,并且那些添加的行不是受到感染。

关于DataTable: 它没有设置列或任何东西,它会重新选择用户选择的选定数据库表。

回答

1

绑定到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); 
      }   
     } 
    } 

的链接有使用数据库,并使用绑定的更完整的例子。

+0

谢谢,这将不得不做。 – user1145927 2012-01-12 16:54:30

+0

另一种可能性在这里:http://stackoverflow.com/questions/2677446/binding-wpf-datagrid-to-datatable-using-templatecolumns – mydogisbox 2012-01-12 16:54:47

0

什么类型是TableData?

如果是List<>则改变列表中的项目将更新绑定
如果它是一个ObservableCollection<>然后更改集合中的项目将更新绑定

+0

它的一个DataTable(公共DataTable表数据) – user1145927 2012-01-12 16:38:23

+0

没有它的TableDate!看看你使用itemsource绑定的变量。我在问什么类型是变量。 – MyKuLLSKI 2012-01-12 17:36:41