WPF 2-Way数据包DataGrid

时间:2010-07-28 18:53:09

标签: .net wpf c#-4.0 wpfdatagrid

有人能指出一个绑定到SQL表的WPF Datagrid的一个非常简单的例子(C#4.0)。我真的很喜欢简单的例子。我希望能够添加,编辑和删除行。感谢。

2 个答案:

答案 0 :(得分: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的外观,但我会让您自己查看。

答案 1 :(得分:0)

如果您正在寻找一些如此简单的东西,以至于为您生成/完成所有添加/编辑/删除命令,那么我认为您运气不好,因为据我所知,您必须编写所有的代码自。除非您使用ADO.NET和DataSet,否则因为Visual Studio确实有向导生成数据集的update / insert / delete / select语句...

我自己使用LINQ to SQL来处理所有与SQL相关的东西,包括在DataGrid中显示数据。这很简单,虽然我确实发现DataGrid(v1,包含在.NET Framework 4中)是一个半裸的cr * p,它充满了bug和怪癖。但一般来说,编辑一些SQL表数据所需的步骤是:

1)使用SQL模式创建“LINQ to SQL Classes”文件;

2)将数据加载到数据网格中,例如。 - this.DataGrid1.ItemsSource = new BindingList((来自客户选择c中的c).ToList());

3)对于DataGrid列中的绑定,将NotifyOnSourceUpdated设置为true,然后处理DataGrid的SourceUpdated事件。在事件处理程序中,您可以将更新的项目(可通过事件处理程序参数 - > BindingOperations.GetBindingExpression(e.TargetObject,e.Property).DataItem获取)插入到预定的HashSet中(哈希集仅包含唯一值,因此,如果多个单元格在同一行中更新,您的散列集中仍然只有唯一的项目。)

4)在保存按钮单击事件处理程序中,您可以遍历HashSet并再次通过LINQ将修改后的数据推送回SQL数据库。如果主键列是int,则可以通过item.Id == 0(item是哈希集中的枚举对象)检查新行,然后将该项插入表中。否则,如果Id!= 0,请从数据库中选择具有指定Id的对象,并使用枚举项的值更新其属性。