第2课 - 显示和编辑数据
本教程演示了如何在GridControl中显示和编辑数据。本教程以第1课添加Grid控件为基础。
创建列
在GridControl中显式添加列,以访问每个列的单独设置。
设计时间
调用GridControl的智能标签,点击生成列。
运行时
创建GridColumn对象,并指定其ColumnBase.FieldName和ColumnBase.IsSmart属性。
MainXaml.xml文件
<dxg:GridControl ItemsSource="{Binding Orders}"> <dxg:GridControl.View> <dxg:TableView ShowTotalSummary="True" AutoWidth="True" BestFitModeOnSourceChange="VisibleRows"/> </dxg:GridControl.View> ... </dxg:GridControl>
更改栏位布局
将列装入GridControl,并设置所有列的最佳宽度以完全显示其内容:
将TableView.AutoWidth属性设置为true,以使列适合GridControl。
将TableView.BestFitModeOnSourceChange属性设置为VisibleRows,以计算所有列的最佳宽度。
<dxg:GridControl ItemsSource="{Binding Orders}"> <dxg:GridControl.View> <dxg:TableView ShowTotalSummary="True" AutoWidth="True" BestFitModeOnSourceChange="VisibleRows"/> </dxg:GridControl.View> ... </dxg:GridControl>
指定一个原位编辑器
GridControl使用就地编辑器来编辑单元格值。编辑器的类型取决于列的内容。CheckEdit用于布尔值,DateEdit用于日期,TextEdit用于字符串和数字。您也可以定义一个自定义编辑器(例如,ComboBoxEdit)。
在ViewModel.cs中添加一个Shippers集合
using DevExpress.Mvvm; using System.Collections.ObjectModel; using System.Data.Entity; namespace WPFBlankAppWithDatabase { public class ViewModel : ViewModelBase { NorthwindEntities northwindDBContext; public ViewModel() { if (IsInDesignMode) { Orders = new ObservableCollection(); Shippers = new ObservableCollection(); } else { northwindDBContext = new NorthwindEntities(); northwindDBContext.Orders.Load(); Orders = northwindDBContext.Orders.Local; northwindDBContext.Shippers.Load(); Shippers = northwindDBContext.Shippers.Local; } } public ObservableCollectionOrders { get => GetValue(); private set => SetValue(value); } public ObservableCollectionShippers { get => GetValue(); private set => SetValue(value); } } }设计运行时
1. 构建解决方案,使Shippers集合在列的智能标签菜单中可见。
2. 调用Ship Via列的智能标签菜单并选择ComboBoxEditSettings。

3. 设置Shippers集合为ComboBoxEdit的ItemsSource。
4.将 DisplayMember 属性设置为 CompanyName,将 ValueMember 属性设置为 ShipperID。
运行时
将xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors "命名空间添加到ThemedWindow中。
创建ComboBoxEdit对象并将其分配给Ship Via列的ColumnBase.EditSettings属性。
指定ItemsSource属性以将ComboBoxEdit绑定到数据。
将DisplayMember属性设置为CompanyName,将ValueMember属性设置为ShipperID。
<dxg:GridColumn FieldName="Freight" IsSmart="True"> <dxg:GridColumn.EditSettings> <dxe:TextEditSettings Mask="c" MaskType="Numeric" MaskUseAsDisplayFormat="True"/> </dxg:GridColumn.EditSettings> </dxg:GridColumn>