首页 > 数据库 >DevExpress WPF中文教程:Grid - 如何将更改发布到数据库(设计时)?

DevExpress WPF中文教程:Grid - 如何将更改发布到数据库(设计时)?

时间:2024-06-20 10:54:50浏览次数:27  
标签:Sub DevExpress args item MainViewModel Grid Context WPF

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

本教程演示如何在DevExpress GridControl中完成编辑数据并将更改保存到数据库中。(注意本文是基于上文的基础上演变的,点击这里可回顾>>

获取DevExpress WPF v24.1正式版下载

DevExpress技术交流群10:532598169      欢迎一起进群讨论

当您启用CRUD(创建、读取、更新、删除)选项时,Items Source Wizard(项目源向导)将添加发布数据功能。

DevExpress WPF中文教程图集

Items Source Wizard(项目源向导)生成以下代码:

1. 设置TableView.ShowUpdateRowButtons属性为OnCellEditorOpen,此属性开启编辑模式,允许用户编辑整行,然后立即提交或取消所有更改:

DevExpress WPF中文教程图集

2. 设置TableView.NewItemRowPosition属性为Top,New Item Row(新项目行)允许用户向GridControl添加新行:

DevExpress WPF中文教程图集

3. 创建以下命令,这些命令是在运行时从带有Command属性的方法生成的,生成的命令名遵循[MethodName]Command模式。

ValidateRow命令添加新行并将更改保存到数据库中:

MainViewModel.cs

[Command]
public void ValidateRow(RowValidationArgs args) {
var item = (Order)args.Item;
if (args.IsNewItem)
_Context.Orders.Add(item);
_Context.SaveChanges();
}

MainViewModel.vb

<Command>
Public Sub ValidateRow(ByVal args As RowValidationArgs)
Dim item = CType(args.Item, Order)
If args.IsNewItem Then _Context.Orders.Add(item)
_Context.SaveChanges()
End Sub

ValidateRowDeletion命令从数据库中删除项目:

MainViewModel.cs

[Command]
public void ValidateRowDeletion(ValidateRowDeletionArgs args) {
var item = (Order)args.Items.Single();
_Context.Orders.Remove(item);
_Context.SaveChanges();
}

MainViewModel.vb

<Command>
Public Sub ValidateRowDeletion(ByVal args As ValidateRowDeletionArgs)
Dim item = CType(args.Items.Single(), Order)
_Context.Orders.Remove(item)
_Context.SaveChanges()
End Sub

DataSourceRefresh命令从数据库中获取更改并更新网格内容:

MainViewModel.cs

[Command]
public void DataSourceRefresh(DataSourceRefreshArgs args) {
_ItemsSource = null;
_Context = null;
RaisePropertyChanged(nameof(ItemsSource));
}

MainViewModel.vb

<Command>
Public Sub DataSourceRefresh(ByVal args As DataSourceRefreshArgs)
_ItemsSource = Nothing
_Context = Nothing
RaisePropertyChanged(NameOf(ItemsSource))
End Sub

TableView属性绑定到生成的命令:

MainView.xaml

<dxg:GridControl x:Name="grid" ItemsSource="{Binding Orders}">
<!-- ... -->
<dxg:GridControl.View>
<dxg:TableView NewItemRowPosition="Top"
ShowUpdateRowButtons="OnCellEditorOpen"
ValidateRowCommand="{Binding ValidateRowCommand}"
ValidateRowDeletionCommand="{Binding ValidateRowDeletionCommand}"
DataSourceRefreshCommand="{Binding DataSourceRefreshCommand}"/>
</dxg:GridControl.View>
</dxg:GridControl>

Delete键从GridControl中删除选定的行:

MainView.xaml

<dxg:GridControl.InputBindings>
<KeyBinding Command="{Binding View.Commands.DeleteFocusedRow, ElementName=grid}" Key="Delete"/>
</dxg:GridControl.InputBindings>

标签:Sub,DevExpress,args,item,MainViewModel,Grid,Context,WPF
From: https://www.cnblogs.com/AABBbaby/p/18258246

相关文章

  • WPF/C#:在DataGrid中显示选择框
    前言在使用WPF的过程中可能会经常遇到在DataGrid的最前或者最后添加一列选择框的需求,今天跟大家分享一下,在自己的项目中是如何实现的。整体实现效果如下:如果对此感兴趣,可以接下来看具体实现部分。实践假设数据库中的模型如下:publicclassPerson{publicintId......
  • 【C#】WPF 使用Storyboard故事板做动画效果
    <Stylex:Key="ButtonAnimationBlueStyle"BasedOn="{x:Null}"TargetType="{x:TypeButton}"><SetterProperty="Template"><Setter.Value><ControlTem......
  • WPF/C#:显示分组数据的两种方式
    前言本文介绍自己在遇到WPF对数据进行分组显示的需求时,可以选择的两种方案。一种方案基于ICollectionView,另一种方案基于IGrouping。基于ICollectionView实现相关cs代码:[ObservableProperty]privateObservableCollection<People>people;publicGroupDemoViewModel(){......
  • 界面控件DevExpress v24.1全新发布 - 跨平台性进一步增强
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力......
  • dataGridView 常用属性和方法
    ContextMenuStrip属性:当用户点击鼠标右键时(设置和contextMenuStrip挂钩)MultiSelect属性是否可以多行选择SelectionMode属性:设置选中方式,比如是否选中一整行(设置为FullRowSelect)Dock属性:设置显示位置AllowUserToAddRows属性:取消表格中末尾的空白Anchor属性:......
  • WPF/C#:如何将数据分组显示
    WPFSamples中的示例在WPFSamples中有一个关于Grouping的Demo。该Demo结构如下:MainWindow.xaml如下:<Windowx:Class="Grouping.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic......
  • WPF/C#:更改界面的样式
    项目结构:先来看看BlueSkin.xaml与YellowSkin.xaml。BlueSkin.xaml:<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-......
  • WPF window keydown
    <Windowx:Class="WpfApp175.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • 报表开发工具DevExpress Reporting v23.2 - 增强PDF导出、多平台打印等
    DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStudio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。DevExpressReporting控件日前正式发布了v23.2,新版本增强了PDF导出、macOS、Linux平台打......
  • DataGridView列填充实体类
    使用的地方:假如你有一个名为rgvProcessDtl的DataGridView控件DataTabledt=(DataTable)rgvProcessDtl.DataSource;foreach(DataRowrowindt){OG_ProcessGuidDtldtl=newOG_ProcessGuidDtl();FillModel(dtl,row);//将实体类对象与grid行填充}//////将数据填入实......