我成功创建了dojox.Grid,但在一种情况下,我需要将两个字段传递给格式化程序函数而不是一个。 例如:Dojox Grid将两个字段传递给格式化程序
{ field: 'id', name: 'Id', formatter: formatterFunction, },
我需要传递给formatterFunction()都“身份证”和“名”的实例。我怎样才能做到这一点? 谢谢。
我成功创建了dojox.Grid,但在一种情况下,我需要将两个字段传递给格式化程序函数而不是一个。 例如:Dojox Grid将两个字段传递给格式化程序
{ field: 'id', name: 'Id', formatter: formatterFunction, },
我需要传递给formatterFunction()都“身份证”和“名”的实例。我怎样才能做到这一点? 谢谢。
你确定要格式化,也许不使用get吗? 当您使用格式化程序时,只有传递给该函数的值是该字段代表的值。
但是,如果您要使用get,则可以使用该项来访问其他值。 (然后你会失去排序)。
因此,对于你列有
{
field: 'id',
name: 'Id',
get: getFunction
},
然后有
getFunction: function(index,row) {
return row.id + row.name;
}
我知道这已经在IRC频道提及,但我在这里回答,让其他人都知道,并且还解决您的进一步问题,我不确定是否有人回答。
新增1.4如果设置字段的值设置为“_item”,那么你的格式将被称为从存储整个项目 - 而不只是一个字段值
这使得有可能使用格式化程序来做你想做的事情。
http://www.dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html#usage
在最简单的情况下,无需设置网格的formatterScope,网格的存储可被从格式化器内通过this.grid.store
访问,例如:
function fmtItem(value) {
var store = this.grid.store;
return store.getValue(value, 'id') + ': ' + store.getValue(value, 'name');
}
下面是上述格式化器的一个非常简单的例子在行动:
有也是这个测试页面,它创建一个对象来保存和范围的格式化的一个例子:
http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_formatters.html
由于从道场1.4你也可以从商店多个字段。应该是这个样子:
var layout = [{
rows: [
{name: 'Title', fields:['Title', 'url'], formatter:formatLink}
]}]
function formatLink(value){
return '<a href="'+value[1]+'">'+value[0]+'</a>';
}
使用该值从外地“URL”必须指向你的链接和标题显示在您的商店充满了数据从“标题”字段。
function formatterFunction(val, rowIdx, cell){
var name=this.name,
field=this.field;
}
下面编辑参见 – Claudio 2010-08-08 14:22:40