当前位置: 首页 > news >正文

【WPF】GridControl的使用

一、前言

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

 

二、范例

 <dxg:GridControl  
      Grid.Row="1"
      ItemsSource="{Binding SelectedSummaryInfos}"
      Margin ="5" >
            <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 = -1;
}

 

 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还有很多有用的设置可以去探索一下,我这里就做个抛砖引玉吧。

 

转载于:https://www.cnblogs.com/lovecsharp094/p/6413724.html

相关文章:

  • node操作mongodb
  • ubuntu 17.04 Tomcat安装
  • Android5.0(Lollipop) BLE蓝牙4.0+浅析code(二)
  • gulp自动化构建工具--压缩css、js、img、编译less、自动刷新一体--学习笔记
  • RPG难题
  • 很不错标签云js插件
  • Atitit 遍历文件夹算法 autoit attilax总结
  • Hive常用命令
  • ArcGIS Runtime SDK for WPF之测量距离和面积
  • hash随笔
  • ELASTIC API
  • 关于版本强制升级与非强制升级
  • Syntax error, insert } to complete MethodBody
  • css之鼠标cursor
  • template.js小小说明
  • @angular/forms 源码解析之双向绑定
  • 【comparator, comparable】小总结
  • ➹使用webpack配置多页面应用(MPA)
  • 2017-08-04 前端日报
  • egg(89)--egg之redis的发布和订阅
  • HTTP中GET与POST的区别 99%的错误认识
  • input实现文字超出省略号功能
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Spring Boot MyBatis配置多种数据库
  • VUE es6技巧写法(持续更新中~~~)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue脚手架vue-cli
  • ​你们这样子,耽误我的工作进度怎么办?
  • (2022 CVPR) Unbiased Teacher v2
  • (7)STL算法之交换赋值
  • (JS基础)String 类型
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (三)Honghu Cloud云架构一定时调度平台
  • ***利用Ms05002溢出找“肉鸡
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Remoting常用部署结构
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET企业级应用架构设计系列之应用服务器
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @property python知乎_Python3基础之:property
  • @RestController注解的使用
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [Android]一个简单使用Handler做Timer的例子
  • [BZOJ1008][HNOI2008]越狱
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [C++] sqlite3_get_table 的使用
  • [CISCN2019 华东北赛区]Web2
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [hibernate]基本值类型映射之日期类型
  • [JS]数据类型
  • [LeeCode]—Wildcard Matching 通配符匹配问题
  • [Step By Step]在SAP Business Objects Data Services中使用SQL Transform将数据导入到SAP HANA中(SQL Transform)...