论坛首页 Web前端技术论坛

GT-Grid 1.0 基础教程(十二)

浏览 6420 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-15  
“自定义列表头之后, 列的位置移动, 列冻结, 列隐藏功能将不再好用”,这个不知什么时候能够修复,特别是自定义表头和列冻结、列位置移动经常会一起使用。感谢fins的辛勤付出,无私奉献
0 请登录后投票
   发表时间:2008-10-16  
这个有技术难度哦
因为自定义表头 开发者是怎么自定义的 很难分析出来
可以很简单 可以很复杂 分析出来了 在处理时也比较郁闷
因为那些 colspan  rowspan 之类的一旦指定 整个表格的 colIndex rowIndex 很难判断.

另外 有些自定义表头根本就 无法进行锁定处理 也无法进行列位置调整的处理
如果你感兴趣  我可以给你截图上来

总之 : 自定义的多样性 和 不可预知性 导致 对自定义表头进行处理非常的麻烦.

如果要对于自定义表头实现上述功能 必须要根据自定义表头的内容和布局 做特殊的判断.
无法做成一个公共的模块.
这个 也许属于 定制 列表的范畴了

如果你需要 你可以把你要定制的表头的 样子和布局 以及约束发给我 我帮你定制.

约束很重要 因为不可能任意列的位置都可以调换的 例如: 基本信息下的 性别 姓名, 不可能调整到 成绩信息下面.

当然 如我之前所言 定制是不免费的哦 呵呵


0 请登录后投票
   发表时间:2008-10-16  
通用的做法应该是这样:自定义列表头之后, 列宽度可调整、列的位置不可以移动, 特定列可冻结
0 请登录后投票
   发表时间:2008-10-16  
"特定"的列可冻结
这个"特定"如果不明确的告诉我哪个列 ,那么对于我来说和"任意"列没有区别

0 请登录后投票
   发表时间:2008-10-16  
而且 这个地方 不是 "指定一个参数 告诉gt冻结哪一列" 就可以了

因为 自定义 尤其有跨行跨列的单元格时  整个机制很复杂

这个工作 几乎只能定制来实现

也就是说 不同的自定义表头 需要不同的实现方法

例如我例子中的

http://fins.iteye.com/admin/pictures/17932


冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面)

这个还只是我的例子 如果你的自定义表头有三行呢??
如果 姓名也是跨列的呢?

另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面?
解除冻结时 放到什么位置?

而且 冻结 实际上内部也是做了移动的 因为冻结的时候 就是要先把列移动到所有非冻结列的前面.

......

总之 一旦使用自定义表头 很多东西都非常难以控制
0 请登录后投票
   发表时间:2008-10-16  
呵呵,fins你把问题复杂化了,从另一个角度思维,不是没有个列有个冻结属性,而是有个fixedColumns的集合,那么一切问题就简单了,具体实现可以参考一下ms flexgrid
0 请登录后投票
   发表时间:2008-10-16  
fixedColumns 这种思路我当然想过了
但是 问题依然是"由于自定义列表的不确定性 即使给了我 fixedColumns 这个集合"我也不知道要怎么处理

我前面提到的那些疑问不是还是存在的吗?

引用

冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面)

这个还只是我的例子 如果你的自定义表头有三行呢??
如果 姓名也是跨列的呢?

另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面?
解除冻结时 放到什么位置?




你是站在使用和api接口的角度来考虑 我是站在实现的角度

所以看问题可能不一样吧 呵呵
0 请登录后投票
   发表时间:2008-10-16  
“冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面)”
“另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面?
解除冻结时 放到什么位置? ”
re:(1)姓名所在的大单元格(所有的基本信息)下面的所有列要么都冻结,要么都不冻结  
    (2)姓名依然在基本信息下面

跨行不是问题,整个列冻结就行
0 请登录后投票
   发表时间:2008-10-16  
很好 你给出了你想要的合理的结果

但是之前有两个客户 提过这个需求 他想要的就不是这样的.

-------------------------------

我提个问题 你可以思考一下:

fixedColumn中的内容 是 "年龄" 和 "性别" 时要该怎么做?

是不是可以这样:
在程序处理时  发现了年龄 那么找到年龄的"父亲"是--基本信息
(判断"年龄"是不是一个子标题 以及寻找年龄的"父标题")
将整个"基本信息"冻结.
之后又发现了性别 ,而性别在 基本信息之下 所以不处理.

然后 对基本信息内的 列的顺序是不是要调整呢?
fixcolumn是年龄和性别,那么是不是应该把这两列放到姓名的前面呢?
那么 你的答案是不是就是标准的答案呢?

----------------------------------

其实我说这么多 不是说 这些做不出来

而是我想突出的是 "自定义与个性化"的一个问题

当 表头是完全可以由客户"自定义"的时候 ,
是不可能提供出来一个通用的规范的 标准化的方法, 来满足客户全部需求的

也就是说 "自定义"的东西,一定要用"自定义"的方法来解决.

因为 由于自定义的存在 导致 每一个客户 心里都有一个自己渴望的"标准答案".


-----------------------------------

另外 实现你提的这个需求 需要多少行代码??我简单分析了一下 大概需要500行以上.
(包括空行 和 大括号行)

为了一个"不常用而且非必要" 的功能 增加了几百行代码 是否值得?
每一行代码 会带来新的bug, 每一个bug都需要大量的测试....
这背后的成本我是不得不去顾及的.


所以 开发产品 和做项目 或者是做技术验证 不一样的.
需要顾及的东西太多了

希望你理解


0 请登录后投票
   发表时间:2008-10-16  
fins 写道

很好 你给出了你想要的合理的结果

但是之前有两个客户 提过这个需求 他想要的就不是这样的.

-------------------------------

我提个问题 你可以思考一下:

fixedColumn中的内容 是 "年龄" 和 "性别" 时要该怎么做?

是不是可以这样:
在程序处理时  发现了年龄 那么找到年龄的"父亲"是--基本信息
(判断"年龄"是不是一个子标题 以及寻找年龄的"父标题")
将整个"基本信息"冻结.
之后又发现了性别 ,而性别在 基本信息之下 所以不处理.

然后 对基本信息内的 列的顺序是不是要调整呢?
fixcolumn是年龄和性别,那么是不是应该把这两列放到姓名的前面呢?
那么 你的答案是不是就是标准的答案呢?

----------------------------------

其实我说这么多 不是说 这些做不出来

而是我想突出的是 "自定义与个性化"的一个问题

当 表头是完全可以由客户"自定义"的时候 ,
是不可能提供出来一个通用的规范的 标准化的方法, 来满足客户全部需求的

也就是说 "自定义"的东西,一定要用"自定义"的方法来解决.

因为 由于自定义的存在 导致 每一个客户 心里都有一个自己渴望的"标准答案".


-----------------------------------

另外 实现你提的这个需求 需要多少行代码??我简单分析了一下 大概需要500行以上.
(包括空行 和 大括号行)

为了一个"不常用而且非必要" 的功能 增加了几百行代码 是否值得?
每一行代码 会带来新的bug, 每一个bug都需要大量的测试....
这背后的成本我是不得不去顾及的.


所以 开发产品 和做项目 或者是做技术验证 不一样的.
需要顾及的东西太多了

希望你理解



其实我也是在往产品的角度考虑,产品只考虑通用性,对于你此处提到的情况其实应该有个很简单的原则:既然基本信息下不是所有列都指定为冻结,那么基本信息下的所有列都不冻结,否则整个基本信息下的所有列都冻结
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics