日期:2014-05-16  浏览次数:20499 次

ext探讨:可编辑grid里能根据数据类型的不同自动变换用下拉列表、日期选择、单选、多选和文本输入等的编辑方式吗?
ext探讨:可编辑grid里能根据数据类型的不同自动变换用下拉列表、日期选择、单选、多选和文本输入等的编辑方式吗?
(注意;数据是动态的从数据库获取的,数据类型和数据取值也不相同,怎么做到在ext可编辑grid里根据数据类型的不同在编辑时自动切换编辑方式为日期选择、下拉列表还是多选等)
ExtJS 可编辑grid 切换编辑方式

------解决方案--------------------
我觉得你首先要解决,怎么判断数据类型,比如说 单元格内显示一个:1  如何知道他是单选、复选、文本还是下拉框
------解决方案--------------------
根据类型?是每列的类型是固定的吗?
------解决方案--------------------
可以动态的设置一列的啊
------解决方案--------------------
引用:
可以动态的设置一列的啊

楼主估计是想根据内容动态设置,而不是事先设置好
------解决方案--------------------
lz做法破坏了ext.grid设计了 不重写控件很难做到
先确定这样的需求是不是合理吧 跟数据库表一样 grid每一列的数据类型必须是一样的
再说通过数据来判断类型靠谱不靠谱先不说,比如combobox是需要store的 这个你又如何根据数据动态加载?
------解决方案--------------------
1.可以动态配置编辑器的.比如事先设置一批文本\浮点数\整数\日期等编辑器,在render事件中(也可以把这些数据类型写入一个文件,在构造列模型时就选择好编辑器)根据reader里的type:'float'等判断,然后在列模型中setEditor( Number col, Object editor ),setConfig( Array config, Boolean initial )等函数就可以动态设置编辑器.如果数据类型不足以表示多种编辑器选择的要求,你还可以在render里设置一个自己的属性表示其他的选择,如单独用一个属性editorType来表示选择的编辑器编号.
2.你需要写一个grid的扩展,然后你的每一张表都在这个基类下操作.在子类中你只需要设置好type:'float'或editorType,选择编辑器的事基类会帮你搞定.
3.随着表的增多,你会发现,编辑器会越来越多,主要是有的表需要设置取值范围,有的需要校验,有的编辑器需要监听选择事件,有的编辑器需要有不同的初值等等.
4.构造一个好的基类是Ext开发很重要的一个环节.否则你的代码既臃肿又不易读.
------解决方案--------------------
如果你的问题是同一个grid,同一列的不同单元格设置不同的编辑器,那就另当别论了,原则上是可以动态改变编辑器的,但是这种要求就不适合grid.
------解决方案--------------------
你重新描述一下你的需求,你究竟需要什么,ext的版本是3还是4.如果你真的是想在同一列不同单元格使用不同的编辑器,你最好不要用grid,可以考虑使用属性页.grid的每一列应该是同一类数据,同一类数据既有时间又有数字\字符,很难想象.