一、前言

在WPF中我们常常使用DataGrid来显示数据,在Dev中也有一个类似的控件—GridControl。

二、范例

 <dxg:GridControl
Grid.Row=""
ItemsSource="{Binding SelectedSummaryInfos}"
Margin ="" >
<dxg:GridControl.View >
<dxg:TableView Name="SummaryTable" AutoWidth="True" AllowMoveColumnToDropArea="False"/>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn Header="楼层" Binding="{Binding FloorName}" ReadOnly="True"/>
<dxg:GridColumn Header="类型" Binding="{Binding QuantificationType}" ReadOnly="True"/>
<dxg:GridColumn Header="级别" Binding="{Binding RType}">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RowData.Row.RType}" FontFamily="SJQY"></TextBlock>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn Header="直径(mm)" Binding="{Binding Diameter}" ReadOnly="True" />
<dxg:GridColumn Header="总长(m)" Binding="{Binding Quantity,StringFormat={}{0:###.###}}" ReadOnly="True"/>
<dxg:GridColumn Header="总重(t)" Binding="{Binding Weight,StringFormat={}{0:###.###}}" ReadOnly="True" />
</dxg:GridControl.Columns>
</dxg:GridControl>

通过以上代码范例,我们可以看到以下几个特点:

1. 当GridContol显示时默认有一个拖拽框用以将字段拖入其中进行分组排序,这是一个很强大的功能,如果你不需要这个功能,可以ShowGroupPanel=“false”。

2. AllowMoveColumnToDropArea="False"是不让用户随意拖拽某一列至垃圾区。

3. GridControl通过设置TableView的AutoWidth=“Auto”来使Columns占满整个Grid,如果不设置的话有时候你会发现展现出的Grid会多出一列!

4. GridControl通过TableView的Name来进行某些操作,如导出成Excel:

var projectName = "Project";
if (projectNameItem != null)
{
projectName = projectNameItem.Value;
} var dlg = QSContainer.Resolve<ISaveFileDialogService>(); //IOC
dlg.Filter = "Excel file(*.xls)|*.xls";
dlg.DefaultFileName = $"{projectName}_{"Summary.xls"}";
if (!dlg.ShowDialog())
{
return;
} var filePath = dlg.GetFullFileName();
SummaryTable.ExportToXls(filePath); // Name !
try
{
Process.Start(filePath);
}
finally { }

5. dxg:GridColumn不能直接包含FontFamily等在DataGridTextColumn中常见的属性,需要重写Template,重写的时候有两个地方需要绑定,Template绑定的是RowData.Row.XX:

<dxg:GridColumn   Header="级别" Binding="{Binding RType}">    //第一处绑定
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RowData.Row.RType}" FontFamily="MS"></TextBlock> //第二处绑定,这里是RowData.Row.XX
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>

6. 上面说到GridControl有一个的强大的功能,GroupPanel。你可以将列标题拖入这个GroupPanel从而达到排序显示功能。如果我想把GroupPanel里的列恢复原样该怎么办?怎么通过代码把列给拖回原来的列表位置?这里有个简单的方法

foreach(var item in gc.Columns)
{
item.GroupIndex = -;
}

7. 这个GroupPanel显示的时候会有一行英文提示:gridcontrol Drag a column header here to group by that column;如果想要用其它文字或者语言表述的话,可以:

 <dxg:TableView Name="tableView1" ShowTotalSummary="True">
<dxg:TableView.RuntimeLocalizationStrings>
<dxg:GridRuntimeStringCollection>
<dxg:RuntimeStringIdInfo Id="GridGroupPanelText" Value="Your words"/>
</dxg:GridRuntimeStringCollection>
</dxg:TableView.RuntimeLocalizationStrings>
</dxg:TableView>

三、小结

本文大致介绍了Dev的GridControl的基本功能,其实GridControl还有很多有用的设置可以去探索一下,我这里就做个抛砖引玉吧。

【WPF】GridControl的使用的更多相关文章

  1. WPF gridcontrol 后台代码清除过滤筛选条件

    WPF 后台清除gridcontrol过滤筛选条件: ColumnName:列名 user_GridControl:gridcontrol控件名 user_GridControl.ClearColum ...

  2. wpf GridControl selectAll UnSelect

    <Window x:Class="WpfApplication1.GridControlView" xmlns="http://schemas.microsoft. ...

  3. WPF GridControl单元格值与过滤值相同时,改变单元格背景色

    DataTrigger的Value不可绑定,所以我们需要用MultiBinding来实现这个功能. <dxg:TableView.CellStyle> <Style TargetTy ...

  4. DevExpress v17.2新版亮点—WPF篇(二)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...

  5. WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻

    DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...

  6. WPF datagrid/gridcontrol 中选中多行,复制粘贴到excel或其他文本编辑器中

    wpf中 data grid 开启自带的选中,然后复制,可以到excel中直接粘贴,在某些业务场景中很实用,方便.开启也很简单: SelectionMode="Row" 加上这个, ...

  7. [Irving] Wpf DevexPress GridControl 获取选中行

    WPF前台绑定事件代码: <RelayAction TargetControl="{Binding ElementName=GCInstoragePart}" MethodN ...

  8. 为WPF版的GridControl控件添加行序号功能

    废话不多数,先上效果图和代码: 包装GridControl控件 cs using DevExpress.Xpf.Data; using DevExpress.Xpf.Grid; using Syste ...

  9. WPF DEV gridcontrol 自定义计算列(TotalSummary)

    /// <summary> /// 自定义计算列 /// </summary> /// <param name="sender"></pa ...

随机推荐

  1. bootstrap 4 panels已被card替换

    https://www.zhihu.com/question/34838389?sort=created 解决问题的思路不对,不应该搜不到就各种着急,应该理清思路, 既然 bootstrap4没有了3 ...

  2. C#随堂

    顺序语句 上到下执行 分支语句 if    else switch() { case 1: Console.WriteLine(1); break; case 2: Console.WriteLine ...

  3. Laxcus大数据操作系统2.0(5)- 第二章 数据组织

    第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...

  4. 常用的不易记忆的css自定义代码

    在制作页面时,经常会遇到需要自定义一些标签的默认行为(如:input的占位符等),但这些默认的设置的css一般比较难记住,所以有必要自己做一下记录.下面是我经常用到的一些重设默认行为的css. 1.占 ...

  5. sql主表分页查询关联子表取任意一条高效方案

    有个业务场景,主表中一条数据,在子表中有多条详情数据.对数据进行展示的时候,产品希望随意拿一条子表的数据关联展示出来,用了很多方案,但是都不够好. sql查询取子表任意一条,多个字段的方案 最终找到一 ...

  6. L1正则化与L2正则化的理解

    1. 为什么要使用正则化   我们先回顾一下房价预测的例子.以下是使用多项式回归来拟合房价预测的数据:   可以看出,左图拟合较为合适,而右图过拟合.如果想要解决右图中的过拟合问题,需要能够使得 $ ...

  7. lintcode-512-解码方法

    512-解码方法 有一个消息包含A-Z通过以下规则编码 'A' -> 1 'B' -> 2 ... 'Z' -> 26 现在给你一个加密过后的消息,问有几种解码的方式 样例 给你的消 ...

  8. C语言文法阅读与理解

    <翻译单元>--><外部声明>--><函数定义>|<申报> <函数定义>--><声明说明符>-->< ...

  9. 解决pciss_spc导入提示表空间不存在以及扩展失败的问题

    select NAME FROM USER$ ORDER BY NAME ; CREATE USER pciss IDENTIFIED BY pciss ; GRANT DBA TO pciss ; ...

  10. 【转载】mysql建表date类型不能设置默认值

    如题,mysql建表date类型的不能设置一个默认值,比如我这样: CREATE TABLE `new_table` ( `biryhday` datetime NULL DEFAULT '1996- ...