2012-01-12 142 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