Extjs4中的setRenderer()方法
Extjs4中的setRenderer()方法,extjs,extjs4,Extjs,Extjs4,extjs3.3.1将方法setRenderer()设置为 /** * Sets the rendering (formatting) function for a column. */ setRenderer( Number col, Function fn ) : void 现在我在setRenderer的extjs4中找不到任何方法。那么,如何在运行时在extjs4中格式化网格列?当您创建网格时,可以在每个列上定义渲染器 Ext.create('Ext.grid.Panel',
extjs3.3.1
将方法setRenderer()
设置为
/**
* Sets the rendering (formatting) function for a column.
*/
setRenderer( Number col, Function fn ) : void
现在我在
setRenderer
的extjs4
中找不到任何方法。那么,如何在运行时在extjs4
中格式化网格列?当您创建网格时,可以在每个列上定义渲染器
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;
}
创建网格时,可以在每列上定义渲染器
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,
});
我之所以喜欢这种方法,是因为我能够将渲染器函数放在控制器中,并将逻辑排除在视图之外。它帮助我更好地组织代码。我所做的是在事件发生后设置渲染器。启动应用程序后,我得到了实例化的组件,并在控制器的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,
});
我之所以喜欢这种方法,是因为我能够将渲染器函数放在控制器中,并将逻辑排除在视图之外。它可以帮助我更好地组织代码。它看起来像是在文章中提到的方法 您可以使用来交换不同的列列表(以及渲染器),但是这确实有一个主要的缺点,即您必须完全重新指定整个列 你找到更好的方法了吗?我真的不喜欢这样的事实,它迫使你把渲染器放在一个地方,它们不能被测试,不能以非静态的方式访问状态 然而,在这种情况下,治疗似乎比疾病更糟糕,因为您最终会从视图中删除非常明确的视图代码
有时,他们觉得自己并没有认真考虑这些东西的设计:(这看起来像是顺便提到的方法 您可以使用来交换不同的列列表(以及渲染器),但是这确实有一个主要的缺点,即您必须完全重新指定整个列 你找到更好的方法了吗?我真的不喜欢这样的事实,它迫使你把渲染器放在一个无法测试的地方,也无法以非静态的方式访问状态 然而,在这种情况下,治疗似乎比疾病更糟糕,因为您最终会从视图中删除非常明确的视图代码
有时,他们觉得自己并没有认真考虑这些东西的设计:(谢谢你的回答,但我想更改渲染后的网格列,而不破坏网格。这意味着我有两个网格,我想在第一个网格列的itemClick或cellClick上更改第二个网格列。我在Extjs中获得了重新配置网格面板的方法。重新配置(Ext.data.Store Store,Array columns):void使用新存储/列重新配置表。如果不希望更改存储或列,则可以省略它们。参数存储:Ext.data.store新存储。列:数组列配置数组返回void我在
Ext.grid.Panel
中未看到重新配置
方法是Ext.panel.Table中的一个。我们也可以将它用于GridPanel.for,即-GridPanel.reconfigure(存储,列);谢谢您的回答,但我想更改渲染后的网格列,而不破坏网格。这意味着我有两个网格,我想在第一个网格列的itemClick或cellClick上更改第二个网格列。我在Extjs中获得了重新配置到GridPanel的方法。重新配置(Ext.data.Store Store,Array columns):void使用新存储/列重新配置表。如果不希望更改存储或列,则可以省略它们。参数存储:Ext.data.store新存储。列:数组列配置数组返回void我在Ext.grid.Panel
中未看到重新配置
方法是Ext.panel.Table中的一个。我们也可以将其用于GridPanel.for,即-GridPanel.reconfigure(store,columns);我有疑问,如果你有聊天权限,我有疑问,如果你有聊天权限