2010-07-28 154 views
0

任何人都可以點我到WPF數據網格的一個很簡單的例子(C#4.0),多數民衆贊成綁定到SQL表。我真的很喜歡簡單的例子。我希望能夠添加,編輯和刪除行。謝謝。WPF 2路數據綁定的DataGrid

回答

1

看起來像一個古老的線程,但希望這仍然是有用的。如果您可以將您的數據放入ObservableCollection中,那麼大多數困難的事情都會爲您完成。從那裏,你可以做這樣的事情:

ObservableCollection<Items> ocItems = new ObservableCollection<Items>(); 
ocItems.Add(new Items()); 

dgGrid.ItemsSource = ocItems; 

,或者,如果你想這樣做在XAML中,你可以做這樣的事情:

<DataGrid Name="dgGrid" ItemsSource="{Binding ocItems, Mode=TwoWay}" AutoGenerateColumns="True" /> 

,然後確保你有在您的代碼中稱爲ocItems的對象。

通過使用一個ObservableCollection,你就會得到補充,並自動刪除更新程序,所以你不必告訴DataGrid的更新。通過使用雙向綁定,您可以完成任何已完成的編輯工作。您可以使用DataGridColumns項目自定義DataGrid的外觀,但我會讓你自己來看看。

0

如果你正在尋找的東西這麼簡單,所有的添加/編輯/刪除命令生成/爲你做,那我覺得你的運氣了,因爲據我所知,你必須代碼一切你的自我。除非你可能使用ADO.NET和DataSet,因爲Visual Studio確實有嚮導會爲數據集生成更新/插入/刪除/選擇語句...我自己使用LINQ to SQL來處理所有SQL相關的東西,包括在DataGrid中顯示數據。雖然我確實發現DataGrid(v1,包含在.NET Framework 4中)是一個枯燥無味的怪物和怪癖,但它很簡單。但在一般所需的步驟編輯一些SQL表中的數據將是:

1)創建一個「LINQ to SQL類」與您的SQL架構文件;

2)將數據加載到您的數據網格中,例如。 - this.DataGrid1.ItemsSource = new BindingList((從Customers中的c選擇c).ToList());

3)對於在DataGrid的列綁定,NotifyOnSourceUpdated設置爲true,然後處理DataGrid的SourceUpdated事件。在事件處理程序中,您可以將更新的項目(可通過事件處理程序參數 - > BindingOperations.GetBindingExpression(e.TargetObject,e.Property).DataItem)獲取到預定義的HashSet中(哈希集只包含唯一值,因此如果有多個單元格在同一行更新,你的哈希集中仍然只有唯一的項目)。

4)在您的保存按鈕單擊事件處理程序,你可以通過HashSet的迭代和修改後的數據回推到SQL數據庫,再通過LINQ。如果主鍵列爲int,則可以通過item.Id == 0檢查新行(item是哈希集中的枚舉對象),然後將該項插入表中。否則,如果Id!= 0,則使用指定的ID從數據庫中選擇一個對象,並使用枚舉項的值更新其屬性。