锁定老帖子 主题:GT-Grid 1.0 基础教程(十二)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-15
“自定义列表头之后, 列的位置移动, 列冻结, 列隐藏功能将不再好用”,这个不知什么时候能够修复,特别是自定义表头和列冻结、列位置移动经常会一起使用。感谢fins的辛勤付出,无私奉献
|
|
返回顶楼 | |
发表时间:2008-10-16
这个有技术难度哦
因为自定义表头 开发者是怎么自定义的 很难分析出来 可以很简单 可以很复杂 分析出来了 在处理时也比较郁闷 因为那些 colspan rowspan 之类的一旦指定 整个表格的 colIndex rowIndex 很难判断. 另外 有些自定义表头根本就 无法进行锁定处理 也无法进行列位置调整的处理 如果你感兴趣 我可以给你截图上来 总之 : 自定义的多样性 和 不可预知性 导致 对自定义表头进行处理非常的麻烦. 如果要对于自定义表头实现上述功能 必须要根据自定义表头的内容和布局 做特殊的判断. 无法做成一个公共的模块. 这个 也许属于 定制 列表的范畴了 如果你需要 你可以把你要定制的表头的 样子和布局 以及约束发给我 我帮你定制. 约束很重要 因为不可能任意列的位置都可以调换的 例如: 基本信息下的 性别 姓名, 不可能调整到 成绩信息下面. 当然 如我之前所言 定制是不免费的哦 呵呵 |
|
返回顶楼 | |
发表时间:2008-10-16
通用的做法应该是这样:自定义列表头之后, 列宽度可调整、列的位置不可以移动, 特定列可冻结
|
|
返回顶楼 | |
发表时间:2008-10-16
"特定"的列可冻结
这个"特定"如果不明确的告诉我哪个列 ,那么对于我来说和"任意"列没有区别 |
|
返回顶楼 | |
发表时间:2008-10-16
而且 这个地方 不是 "指定一个参数 告诉gt冻结哪一列" 就可以了
因为 自定义 尤其有跨行跨列的单元格时 整个机制很复杂 这个工作 几乎只能定制来实现 也就是说 不同的自定义表头 需要不同的实现方法 例如我例子中的 http://fins.iteye.com/admin/pictures/17932 冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面) 这个还只是我的例子 如果你的自定义表头有三行呢?? 如果 姓名也是跨列的呢? 另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面? 解除冻结时 放到什么位置? 而且 冻结 实际上内部也是做了移动的 因为冻结的时候 就是要先把列移动到所有非冻结列的前面. ...... 总之 一旦使用自定义表头 很多东西都非常难以控制 |
|
返回顶楼 | |
发表时间:2008-10-16
呵呵,fins你把问题复杂化了,从另一个角度思维,不是没有个列有个冻结属性,而是有个fixedColumns的集合,那么一切问题就简单了,具体实现可以参考一下ms flexgrid
|
|
返回顶楼 | |
发表时间:2008-10-16
fixedColumns 这种思路我当然想过了
但是 问题依然是"由于自定义列表的不确定性 即使给了我 fixedColumns 这个集合"我也不知道要怎么处理 我前面提到的那些疑问不是还是存在的吗? 引用 冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面) 这个还只是我的例子 如果你的自定义表头有三行呢?? 如果 姓名也是跨列的呢? 另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面? 解除冻结时 放到什么位置? 你是站在使用和api接口的角度来考虑 我是站在实现的角度 所以看问题可能不一样吧 呵呵 |
|
返回顶楼 | |
发表时间:2008-10-16
“冻结"学号" 还是"姓名" 还是"所有的基本信息" 需要完全不同的算法 (因为学号跨行 而姓名又在一个跨列的大单元格下面)”
“另外 我冻结姓名时怎么处理?是把姓名单独作为一列 还是 依然在"基本信息"下面? 解除冻结时 放到什么位置? ” re:(1)姓名所在的大单元格(所有的基本信息)下面的所有列要么都冻结,要么都不冻结 (2)姓名依然在基本信息下面 跨行不是问题,整个列冻结就行 |
|
返回顶楼 | |
发表时间:2008-10-16
很好 你给出了你想要的合理的结果
但是之前有两个客户 提过这个需求 他想要的就不是这样的. ------------------------------- 我提个问题 你可以思考一下: fixedColumn中的内容 是 "年龄" 和 "性别" 时要该怎么做? 是不是可以这样: 在程序处理时 发现了年龄 那么找到年龄的"父亲"是--基本信息 (判断"年龄"是不是一个子标题 以及寻找年龄的"父标题") 将整个"基本信息"冻结. 之后又发现了性别 ,而性别在 基本信息之下 所以不处理. 然后 对基本信息内的 列的顺序是不是要调整呢? fixcolumn是年龄和性别,那么是不是应该把这两列放到姓名的前面呢? 那么 你的答案是不是就是标准的答案呢? ---------------------------------- 其实我说这么多 不是说 这些做不出来 而是我想突出的是 "自定义与个性化"的一个问题 当 表头是完全可以由客户"自定义"的时候 , 是不可能提供出来一个通用的规范的 标准化的方法, 来满足客户全部需求的 也就是说 "自定义"的东西,一定要用"自定义"的方法来解决. 因为 由于自定义的存在 导致 每一个客户 心里都有一个自己渴望的"标准答案". ----------------------------------- 另外 实现你提的这个需求 需要多少行代码??我简单分析了一下 大概需要500行以上. (包括空行 和 大括号行) 为了一个"不常用而且非必要" 的功能 增加了几百行代码 是否值得? 每一行代码 会带来新的bug, 每一个bug都需要大量的测试.... 这背后的成本我是不得不去顾及的. 所以 开发产品 和做项目 或者是做技术验证 不一样的. 需要顾及的东西太多了 希望你理解 |
|
返回顶楼 | |
发表时间:2008-10-16
fins 写道 很好 你给出了你想要的合理的结果 但是之前有两个客户 提过这个需求 他想要的就不是这样的. ------------------------------- 我提个问题 你可以思考一下: fixedColumn中的内容 是 "年龄" 和 "性别" 时要该怎么做? 是不是可以这样: 在程序处理时 发现了年龄 那么找到年龄的"父亲"是--基本信息 (判断"年龄"是不是一个子标题 以及寻找年龄的"父标题") 将整个"基本信息"冻结. 之后又发现了性别 ,而性别在 基本信息之下 所以不处理. 然后 对基本信息内的 列的顺序是不是要调整呢? fixcolumn是年龄和性别,那么是不是应该把这两列放到姓名的前面呢? 那么 你的答案是不是就是标准的答案呢? ---------------------------------- 其实我说这么多 不是说 这些做不出来 而是我想突出的是 "自定义与个性化"的一个问题 当 表头是完全可以由客户"自定义"的时候 , 是不可能提供出来一个通用的规范的 标准化的方法, 来满足客户全部需求的 也就是说 "自定义"的东西,一定要用"自定义"的方法来解决. 因为 由于自定义的存在 导致 每一个客户 心里都有一个自己渴望的"标准答案". ----------------------------------- 另外 实现你提的这个需求 需要多少行代码??我简单分析了一下 大概需要500行以上. (包括空行 和 大括号行) 为了一个"不常用而且非必要" 的功能 增加了几百行代码 是否值得? 每一行代码 会带来新的bug, 每一个bug都需要大量的测试.... 这背后的成本我是不得不去顾及的. 所以 开发产品 和做项目 或者是做技术验证 不一样的. 需要顾及的东西太多了 希望你理解 其实我也是在往产品的角度考虑,产品只考虑通用性,对于你此处提到的情况其实应该有个很简单的原则:既然基本信息下不是所有列都指定为冻结,那么基本信息下的所有列都不冻结,否则整个基本信息下的所有列都冻结 |
|
返回顶楼 | |