在Winform系统开发中,对表格列表中的内容进行分组展示

这篇具有很好参考价值的文章主要介绍了在Winform系统开发中,对表格列表中的内容进行分组展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在我们开发Winform界面的时候,有时候会遇到需要对一些字段进行一些汇总的管理,如果在列表中能够对表格列表中的内容进行分组展示,将比较符合我们的预期,本篇随笔介绍在Winform开发中如何利用DevExpress的GridView实现该功能。

1、准备数据表和一些数据

我们来以ERP系统中的一个原料表格来介绍我们对表格数据汇总的处理,首先创建一个原料表用来测试,表的数据库设计可以采用PowerDesigner等类似的建模工具设计,如下所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

通过预览生成SQL的方式,我们可以生成对应不同的数据库的数据库脚本,用于创建对应的数据库表。

在Winform系统开发中,对表格列表中的内容进行分组展示

 生成对应的数据表后,我们往里面填入一些测试的数据,用于实际的测试处理。

我们准备类别不同的数据写入,为了方便测试,具体数据效果如下所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

 有了这些,我们就可以顺利进行下面的代码开发了。

 文章来源地址https://www.toymoban.com/news/detail-801205.html

2、基于具体框架生成基础数据库操作类

在这里可以根据我们实际的需要,生成相关的基础数据库操作类,如我的Winform框架或者SqlSugar 开发框架的Winform前端,都可以直接生成对应的框架基础代码,我们这里以我们的SqlSugar 开发框架模式来开发对应的Winform界面。

在Winform系统开发中,对表格列表中的内容进行分组展示

由于我们开发一般是基于增量式的开发方式,因此我们可以一次性选择我们新增的表进行生成底层框架的支持代码,如下确定界面所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

 最终生成一个可以直接运行的项目整体框架方案。

在Winform系统开发中,对表格列表中的内容进行分组展示

 如果我们是考虑增量式的整合在我们现有的项目上,那么我们可以把SugarProjectCore项目目录里面的文件夹整个复制整合到我们已有的项目上即可。

它们的目录结构已经根据不同的功能放在了不同的文件夹中了,如下图所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

例如,我们把它们整个复制放置到了对应项目目录下,如下所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

 那么目前我们已有项目上就增加了对应的访问数据库的业务类所需要的模型、接口、具体实现类了。

接下来就是对Winform的界面进行生成了。

3、生成相关的界面,并实现分组的特殊处理

前面我们介绍了,这个案例介绍基于我们SqlSugar开发框架的实现,因此我们基于SqlSugar开发框架的Winform界面进行生成即可。生成的界面直接调用刚才的创建的基础接口来请求数据和绑定处理,以及相关的导入导出、编辑、删除等基础操作。

在Winform系统开发中,对表格列表中的内容进行分组展示

上面的界面就是基于SqlSugar开发框架生成的Winform界面的时候,对界面中查询条件、列表展示的字段,以及编辑界面的字段进行设计的处理,代码生成工具根据这些设定进行界面代码的生成。

生成的代码,自动包含了列表展示和编辑等基础界面功能,如下代码文件所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

我们把这些文件整合到我们已有的UI项目上,就可以实现表的界面代码增量的生成了。

直接测试编译运行,稍作调整,最终的界面效果如下所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

 以上的表格数据,只是常规的展示,并没有实现分组的处理,我们增加一个复选框,用来设置分组处理的展示,如下界面所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

我们注意到,在WInform界面中,生成的界面代码包含了对数据的绑定显示,如下就是对表的数据请求函数。

        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private async Task<IPagedResult<MaterialInfo>> GetData()
        {
            MaterialPagedDto pagerDto = null;
            if (advanceCondition != null)
            {
                pagerDto = new MaterialPagedDto(this.winGridViewPager1.PagerInfo);
                pagerDto = dlg.GetPagedResult(pagerDto);               
            }
            else
            {
                //构建分页的条件和查询条件
                pagerDto = new MaterialPagedDto(this.winGridViewPager1.PagerInfo)
                {
                    //添加所需条件
                    Category = this.txtCategory.Text.Trim(),
                    Code = this.txtCode.Text.Trim(),
                    Name = this.txtName.Text.Trim(),
                    Alias = this.txtAlias.Text.Trim(),
                    UsePurpose = this.txtUsePurpose.Text.Trim(),
                    SupplierSimple = this.txtSupplierSimple.Text.Trim(),
                    Producer = this.txtProducer.Text.Trim(),
                };

                //日期和数值范围定义
            }

            var result = await BLLFactory<IMaterialService>.Instance.GetListAsync(pagerDto);
            return result;
        }

以上就是根据界面的条件进行数据的条件查询,并返回记录集合。

在获得记录集合后,我们把它赋值给我们自定义的分页控件组件,就可以实现相关数据的正常展示了。

//获取分页数据列表
var result = await GetData();

//设置所有记录数和列表数据源
this.winGridViewPager1.PagerInfo.RecordCount = result.TotalCount; //需先于DataSource的赋值,更新分页信息
this.winGridViewPager1.DataSource = result.Items;

为了实现分组的处理展示,我们需要判断上面的复选框条件,进行分组条件和表达式的创建处理即可,如下代码所示。

//增加汇总字段和显示
var gridView1 = this.winGridViewPager1.gridView1;
if (checkGroup.Checked)
{
    this.winGridViewPager1.ShowLineNumber = false;
    gridView1.IndicatorWidth = 0;
    gridView1.OptionsView.ShowGroupExpandCollapseButtons = true;//显示折叠的分组
    gridView1.OptionsView.AllowCellMerge = true; //允许合并字段
    gridView1.OptionsView.GroupDrawMode = GroupDrawMode.Standard;

    gridView1.GroupSummary.Clear();
    gridView1.Columns["Category"].GroupIndex = 0;//对类别进行分组展示

    var item = new GridGroupSummaryItem();
    item.FieldName = "Id";
    item.DisplayFormat = "  (合计数量 = {0:n})";
    item.SummaryType = DevExpress.Data.SummaryItemType.Count;//Sum、Average等
    gridView1.GroupSummary.Add(item);
    gridView1.ExpandAllGroups();
}
else
{
    gridView1.GroupSummary.Clear();
    this.winGridViewPager1.ShowLineNumber = true;
    gridView1.OptionsView.AllowCellMerge = false;
}

以上就是对数据记录进行分组的代码,核心代码就几行,可以很容易实现我们所需要的分组效果,如下界面所示。

在Winform系统开发中,对表格列表中的内容进行分组展示

 如果我们不需要合并,取消设置为false即可。

gridView1.OptionsView.AllowCellMerge = false; 

以上就是我们介绍基于SqlSugar开发框架生成基础代码、界面代码、以及实现分组处理展示的一些总结。

 

到了这里,关于在Winform系统开发中,对表格列表中的内容进行分组展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格

    这篇文章,主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 目录 一、itext7操作PDF内容 1.1、添加段落文本内容 1.2、添加列表内容 1.3、添加图片 1.4、添加表格 (1)列宽采用点单位(pt点单位) (2)采用百分比单位(%百分比) it

    2024年02月16日
    浏览(50)
  • 让QT中的Qtablewidget控件表格中的元素内容显示居中

    好了看最终的一个演示出来的效果吧  好了,就到这里,下次其他的我再继续更新吧,下面我附上一个类似的文章,写的也可以,有些我没有用到的分享出来你们也可以借鉴一下。 Qt中让tableWidget内容中的每个元素居中(qtablewidget的一些使用) - ww学习笔记 - 博客园

    2024年02月11日
    浏览(46)
  • Python爬虫-爬取文档内容,如何去掉文档中的表格,并保存正文内容

    前言 本文是该专栏的第58篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,可能或多或少爬取过文档数据,比如说“政务网站,新闻网站,小说网站”等平台的文档数据。爬取文档数据,笔者这里就不过多详述,而本文, 笔者将主要介绍在爬取文档

    2024年02月08日
    浏览(55)
  • WORD中的表格内容回车行距过大无法调整行距

    word插入表格,编辑内容,换行遇到如下问题: 回车后行距过大,无法调整行距。 解决方法(并行): 方法1:选中要调整的内容,菜单路径:“编辑-清除-格式” 方法2:设置文本字体格式 方法3:调整回车间的行距,菜单路径:“格式-段落-行距-固定行距” 示例:

    2024年02月08日
    浏览(114)
  • elementUI表格勾选框判断选择相同的内容才能进行后续逻辑处理;否则拦截提示

    需求是: 可多选需满足条件:同一个年级、同一个分数; 不满足条件给出提示:请选择同一个年级 、分数的学生 1、先对勾选数据进行赋值 2、判断是否相同的内容 的公共方法,tableSelectArr是勾选的数据集合 3、按钮位置增加判断、拦截

    2024年02月16日
    浏览(42)
  • Collections工具类,可以使用collections工具类对代码中的list进行分组

    当我们需要对代码list进行分组的时候,有时候使用for循环会显得很蠢,那么使用Colletions工具类就会很方便,根据所需要的分类值,进行映射分组集合,以上是案例 toMap 返回map集合 MapLong, ListLong toList 返回list集合 tips stream流一样好用

    2024年03月23日
    浏览(36)
  • vue3+element-plus点击列表中的图片预览时,图片被表格覆盖

    视觉 点击图片进行预览,但还能继续选中其他的图片进行预览,鼠标放在表格上,那一行表格也会选中,如图所示第一行的效果。 代码 官网文档有这么一个属性,官网是这个描述的Image属性。 在 el-image 中加入属性 preview-teleported=\\\"true\\\" 即可。

    2024年02月13日
    浏览(47)
  • python 一次性删除列表(list)的空白元素(空内容) 或者 一次性删除列表(list)中的指定元素

    看看下述代码: 输出: 当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 \\\'\\\' )? 1.1 删除空内容(方法一) : 输出: 1.2 删除空内容(方法二) : 需要 配合 lambda 表达式 一起使用! 输出: 2.3 删除指定内容 : 输出: 注 :此方法既可以删除空元素,也可以删除指

    2024年02月03日
    浏览(94)
  • 安卓开发多选列表和回显已选择内容

    安卓日常开发和学习过程中,经常会碰到需要多选列表和显示已选择内容的场景,本文将介绍安卓实现多选列表和回显已选择内容的一种方案。 话不多说,先上效果: 思路分析: 一个纵向列表显示待选择内容,一个横向列表用来显示已选择内容,点击待选列表和已选择列表

    2024年02月06日
    浏览(47)
  • elementUi中的el-table表格的内容根据后端返回的数据用不同的颜色展示

    效果图如下: 首先 首先:需要在表格行加入 template slot-scope=\\\"{ row }\\\" /template标签  2.在methods里面加入这个方法:  3.去设置自己喜欢的颜色: //还有另一种(这种后端返回的数据里面带有背景色的字段)    

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包