从WPF Datagrid保存对SQL Server数据库的更改
我正在使用WPF数据网格在SQL Server数据库中显示我的内容。数据网格中的内容绑定到数据库中的一个视图。我填充通过以下加载窗口上的数据网格:从WPF Datagrid保存对SQL Server数据库的更改
this.myAccountantDBDataSet = MyAccountant
.MyAccountantDBDataSet(this.FindResource("myAccountantDBDataSet");
// Load data into the table AccountData.
this.accountDataAdapter = new MyAccountant
.MyAccountantDBDataSetTableAdapters.AccountDataTableAdapter();
this.accountDataAdapter.Fill(myAccountantDBDataSet.AccountData);
System.Windows.Data.CollectionViewSource accountDataViewSource =
(System.Windows.Data.CollectionViewSource)
this.FindResource("accountDataViewSource");
accountDataViewSource.View.MoveCurrentToFirst();
什么我不知道,是如何保存更新,插入和删除回数据库,因为我所显示的数据网格是一个视图。数据库表和视图看起来是这样的:
更新将工作,因为在查看地图1领域:基础表中的1至领域,所以SQL Server将能够解决的更新查看回到表格(甚至AccountType
)。
插入不起作用,因为Account.AccountTypeId
无法设置,我假设它是一个必填字段。
删除将不起作用,因为Sql Server无法分辨您要删除哪个表中的哪条记录。
我认为在这种情况下,你可以同样出色Accounts
记录在DataGridComboBoxColumn
有AccountData
作为数据源,显示AccountData.AccountType
,并结合Account.AccountTypeId
工作,并显示AccountTypeId
。
我的希望是将此字段用作文本列。我希望它显示已输入帐户的帐户类型的值。但是,当用户添加新帐户时,他们可以输入帐户类型。我最终希望此列像AutoCompleteTextBox一样,当用户开始输入时,它会显示已输入的帐户类型的建议,如果用户键入不同的内容,则会添加新的类型。 –
我认为你最好从MVVM开始使用视图模型。您可以在其中定义自动完成列表,并让您的控制器按名称查找ID。 –
你应该真的考虑一些'using'语句和变量/对象的命名约定。这些是一些冗长的标识符。 – Yuck