2008-08-28 72 views
7

情況如下:我需要將WPF FixedPageDataRow綁定。綁定不符合DataRows;他們對DataRowViews工作。我需要以最通用的方式來做到這一點,因爲我對DataRow中的內容一無所知,無法控制。從DataRow獲取DefaultView DataRowView

我需要的是能夠得到DataRowView給定的DataRow。我不能在DefaultView上使用Find()方法,因爲這需要一個密鑰,並且不能保證該表具有主鍵集。

有沒有人建議最好的方法來解決這個問題?

回答

6

不完全是一段性感的代碼,但它們似乎並不是一個自動化的方式來查找行而不只是循環表。

 DataRowView newRowView = null; 
     foreach (DataRowView tempRowView in myDataTable.DefaultView) 
     { 
      if (tempRowView.Row == rowToMatch) 
       newRowView = tempRowView; 
     } 
     if (newRow != null) 
      UseNewRowView(newRowView); 
     else 
      HandleRowNotFound(); 
3
row.Table.DefaultView[row.Table.Rows.IndexOf(row)] 

這是一個好的答案。但是如果您發現自己處於這種情況,您應該考慮更多地瞭解DataViews及其使用方式,然後將代碼重構爲以視圖爲中心而不是以表爲中心。

+0

這不是一個好主意,如果默認視圖已被過濾,索引可能不會排隊。 – 2011-08-05 20:12:05

+1

@JoelBarsotti:除非您在執行此操作之前刪除排序/過濾器,否則可以重新添加它們。但一個很好的捕獲。如果你有更好的答案*,請隨時提供,如果有效,我會很樂意選擇它。 – Will 2011-08-08 10:18:02