FlexCell表格控件有很多亮点的功能,使用也算比较方便,很多时候,可以模拟传统的Excel内容在Winform界面上展现,而且也支持内容格式的预设置等,本文主要介绍利用这个控件来实现一些特殊的统计及关联信息显示的功能。在实际项目中,有一个这样的需求,首先需要显示一些数据的总的汇总数据,每条又可以进一步查看其对应的明细数据,类似于数据仓库的钻取功能,那么我们要如何实现以上的功能呢?
功能介绍如下图所示。
单击链接可以进一步展现相关的人员列表,如下图所示。
实现以上功能,如果利用.NET自带的DataGridView,通过在在Cell里面添加链接控件的方式,估计也能实现,不过可能操作起来会比较麻烦一些。
本文主要介绍利用FlexCell 表格控件实现以上操作的思路,共大家参考,并非为该控件做广告。
首先我们需要在为每个条件显示一行记录,对应还要记住它的条件,其中有一个超链接的单元格,供我们单击可以查看明细。为了记住该行的条件,我其实在一个隐藏列里面放置了条件表达式,真实情况下如下所示,只是为了显示美观,不需要显示隐藏的条件内容。
FlexCell提供超链接的单元格类型,设置为超链接类型的单元格,内容会加下划线,而且可以对超链接的事件进行捕捉处理。
得到了响应的处理事件,以及存放了对应的条件描述,那么在事件里,打开一个新窗体,根据条件内容获取对应的列表显示出来即可。
1)绑定相关的汇总数据
代码如下 | 复制代码 |
Dictionary foreach (string key in dict.Keys) startRow++; |
2)超链接处理事件代码
在控件上单击Grid的Hyperlink处理事件,然后实现其内部处理代码,如下所示。
代码如下 | 复制代码 |
private void grid1_HyperLinkClick(object Sender, FlexCell.Grid.HyperLinkClickEventArgs e) |
3)明细窗体处理代码
代码如下 | 复制代码 |
private void DealAge(string condition, ref int startRow) startRow++; string where = "Age " + condition; DataTable dt = BLLFactory startRow++; startRow++; |
上面的代码,主要就是动态绘制表头,设置格式,然后绘制表格明细的单元格内容即可。
4)实现打印、导出Excel/PDF等功能
控件内置了很多导出功能,实现基本的导出、打印功能,非常方便,代码如下。
代码如下 | 复制代码 |
private void menu_Preview_Click(object sender, EventArgs e) private void menu_PageSetting_Click(object sender, EventArgs e) private void menu_ExportExcel_Click(object sender, EventArgs e) bool success = grid1.ExportToExcel(fileToSave, true, true); /// private void menu_ExportPDF_Click(object sender, EventArgs e) |