微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Extjs4中的setRenderer方法

如何解决Extjs4中的setRenderer方法

|
Extjs 3.3.1
具有方法
setRenderer()
作为
/**
  * Sets the rendering (formatting) function for a column. 
  */
setRenderer( Number col,Function fn ) : void
现在我在ѭ4的
ExtJS 4
中没有任何方法。因此,如何在运行时使用in3ѭ格式化网格列。     

解决方法

创建网格时,可以在每列上定义渲染器。
Ext.create(\'Ext.grid.Panel\',{
    title: \'Grid Sample\',store: Ext.data.StoreManager.lookup(\'yourStore\'),columns: [
        {header: \'Product Description\',dataIndex: \'description\'},{header: \'Cost\',dataIndex: \'cost\',renderer: nameOfRenderFunction },],height: 200,width: 400,renderTo: Ext.getBody()
});
然后您可以在全局范围内定义函数...
function nameOfRenderFunction(v) {
    //do something to v
    return v;
}
    ,事实上,我所做的就是设置渲染器。应用程序启动后,我得到了实例化的组件,并在控制器的onLaunch()函数中添加了一个渲染器,如下所示:
    // An example renderer
    var myComponentsRenderer = function( value ){
        return value++;
    };

    // Get the instantiated component
    var myComponent = Ext.ComponentQuery.query( \"#myComponent\" )[0];

    // Attach the renderer
    Ext.override( myComponent,{
        renderer : myComponentsRenderer,});
我喜欢这种方法的原因是因为我能够将渲染器功能放在控制器中,并且使逻辑不可见。它可以帮助我更好地组织代码。     ,它看起来像在sencha论坛上传递此帖子中提到的方法。 您可以使用网格的重新配置方法来交换不同的列列表(以及渲染器),但是这样做的主要缺点是必须完全重新指定整个列。 您找到更好的方法了吗?我真的不喜欢这样的事实,它迫使您将渲染器放置在无法测试且无法以非静态方式访问状态的位置。 但是,在这种情况下,治愈似乎比疾病还糟,因为您最终将非常明显的视图代码从视图中排除了。 有时候,感觉好像他们并没有真正考虑这些东西的设计:(     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。