也谈kendoUI的grid.
kendoUI 也有一个继承体系,grid继承于kendo.ui.DataBoundWidget,想知道如何构造的,看源码首先看init函数。
在init函数里有一步步dom的构造过程,kendo的grid和extjs的不一样,是一点点构造的,不是由继承先生成整体模板,然后再生成dom.这一点可以参考toobar的构造过程。_toolbar函数里先生成toolbar里的html代码,然后使用jQ的html方法添加到wrapp里,然后添加按钮事件,注意是它内置的按钮会添加click响应事件,你自己的按钮要自己绑定事件,注意绑定事件时使用.kendoGrid这样一个命名空间,这样待组件销毁时,绑定的事件会一并解绑。_toolbar里的自定义按钮还有要注意的是,必须给一个唯一的name,因为最后会生成k-grid-“name"这样一个class,如果没有会用text替代,然后text你大概用了中文,弱爆了。
关于columns定义,如果你在列表的列中定义了command属性,那么也会生成按钮,这里的按钮是可以使用click定义一个相应事件的。field的定义不能重复,这和extjs是不一样的,因为当你自己定义显示内容时,template函数会把一列的数据都传给你,所以不用考虑field的名字了,只要不重复就行,template属性可以是sting,也可以是function,string会用kendoUI强大的template方法编译,function你要return结果字符串。
2015年的kendoUI加了语言包,如果你感觉语言包里定义的不是你想要的,可以在配置里用messages这个配置来覆盖,具体覆盖方法参考语言包。2014年的语言包在simples里有一份,在examples/content/shared/messages/文件夹下。