FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 16153|回复: 15
打印 上一主题 下一主题

Grid表格动态生成

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-29 20:59:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我的需求是,当筛选条件改变时,列会改变。比如当条件1时有列A-D,条件2时有列E-G,每次列都不同,以此类推。现在FineUI无法在回发的时候重新改变Grid的结构。
16#
发表于 2017-6-19 11:45:09 | 只看该作者
上面是我公司报价用的供应商横向查询表。
15#
发表于 2017-6-19 11:43:35 | 只看该作者
private void InitGrid()
       {
            FineUI.BoundField bf;

            
            bf = new FineUI.BoundField();
            bf.DataField = "FoodProjectName";
            bf.SortField = "FoodProjectName";
            bf.DataFormatString = "{0}";
            bf.HeaderText = "报价项目名称";
            bf.Width = 180;
            Grid2.Columns.Add(bf);

            bf = new FineUI.BoundField();
            bf.DataField = "FoodTypeName";
            bf.SortField = "FoodTypeName";
            bf.DataFormatString = "{0}";
            bf.HeaderText = "物料类别";
            bf.Width = 100;
            Grid2.Columns.Add(bf);

            bf = new FineUI.BoundField();
            bf.DataField = "FoodName";
            bf.SortField = "FoodName";
            bf.DataFormatString = "{0}";
            bf.HeaderText = "物料名称";
            bf.Width = 100;
            Grid2.Columns.Add(bf);

            bf = new FineUI.BoundField();
            bf.DataField = "FoodModels";
            bf.SortField = "FoodModels";
            bf.DataFormatString = "{0}";
            bf.HeaderText = "物料型号";
            bf.Width = 100;
            Grid2.Columns.Add(bf);

            bf = new FineUI.BoundField();
            bf.DataField = "FoodUnit";
            bf.SortField = "FoodUnit";
            bf.DataFormatString = "{0}";
            bf.HeaderText = "物料单位";
            bf.Width = 80;
            Grid2.Columns.Add(bf);

            DataTable usinfop = new DataTable();
            usinfop = bllu.GetList("Remark='供应商' and Enabled='True' ORDER BY ID ASC").Tables[0];
            for (int i=0;i< usinfop.Rows.Count;i++)
            {
                bf = new FineUI.BoundField();
                bf.DataField = usinfop.Rows["ChineseName"].ToString();
                bf.SortField = usinfop.Rows["ChineseName"].ToString();
                bf.DataFormatString = "{0}";
                bf.HeaderText = usinfop.Rows["ChineseName"].ToString();
                bf.Width = 100;
                Grid2.Columns.Add(bf);
            }


            Grid2.DataKeyNames = new string[] { "Id"};
        }

bllu.GetList的数据源就是SQL SERVER 2008存储过程动态行转列数据DATASET。
不知道是不是你想要的
14#
发表于 2017-5-22 23:59:48 | 只看该作者
同求解决方案 看到最后也没有明白怎么解决的。
我这里属树控件选择后根据选择获取数据,从而动态生成表格列,列数大部分都不一样
13#
发表于 2016-4-1 10:34:47 | 只看该作者
在存储过程中动态生成的行转列的表后,如何取这个表的字段名。只有取到这字段名后,才能动态的生成GRID列。。。。。
12#
发表于 2016-4-1 10:25:43 | 只看该作者
在存储过程中生成的行转列的表的字段名,如何取。
11#
发表于 2016-3-31 19:45:08 | 只看该作者
我遇到的问题没你遇到的那么操蛋。。。。。我也需要做一个动态加载列,但是我是根据不同表来的,可以做成几个页面。。。你那个就真没办法了,刷新貌似都不行,今天我试了下,动态改变他的数据必须得重新生成。。。。太扯淡了。。。
10#
 楼主| 发表于 2015-12-1 16:04:14 | 只看该作者
zy32002 发表于 2015-11-30 16:28
如果怕有些条件值被刷新掉了,可以保存在cookie里,刷新的时候再写回去就可以了。因为不是ajax的,只能刷新 ...

你说的不错,但存在用户体验不好,每次刷新,页面都会空白一会,尤其是当页面非常大时空白的时间更是长,更是令人反感。另外,假设有有限个列,每次显示其中其中的一部分,但实际上运行非常的慢,每次修改列的显隐都非常耗时,基本能达到5-10s。在这里需要澄清的是,后台数据处理时间非常短100毫秒左右。
9#
发表于 2015-11-30 16:28:13 | 只看该作者
如果怕有些条件值被刷新掉了,可以保存在cookie里,刷新的时候再写回去就可以了。因为不是ajax的,只能刷新页面来达到效果。
8#
发表于 2015-11-30 15:28:07 | 只看该作者
chiikin 发表于 2015-11-30 14:15
说的好有道理,我竟然无言以对。

他说的没错,动态列不支持ajax,但是你可以不使用ajax回发,改成常规的就会刷新整个页面
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-12 11:51 , Processed in 0.049560 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表