Dojox Grid 将两个字段传递给格式化程序

发布于 2024-09-13 08:42:08 字数 225 浏览 10 评论 0原文

我成功创建了一个 dojox.Grid,但在一种情况下,我需要将两个字段而不是一个字段传递给格式化函数。 例如:

   {
        field: 'id',
        name: 'Id',
        formatter: formatterFunction,
    },

我需要将“id”和“name”传递给 formatterFunction() 。我该怎么做? 谢谢。

I created a dojox.Grid successfully, but in one case I need to pass two fields to a formatter function instead of just one.
For instance:

   {
        field: 'id',
        name: 'Id',
        formatter: formatterFunction,
    },

I need to pass to formatterFunction() both 'id' and 'name' for instance. How can I do this?
Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

如何视而不见 2024-09-20 08:42:08

我知道 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://jsbin.com/upico4/edit

在其中一个测试页面中还有一个这样的示例,它创建一个对象来保存格式化程序并确定格式化程序的范围:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_formatters.html

I know this was already mentioned in the IRC channel, but I'm answering here so others are aware, and also to address your further question that I'm not sure anyone answered.

New in 1.4 If you set the value of the field to "_item", then your formatter will be called with the entire item from the store - instead of just one field value

This makes it possible to do what you want using a formatter as well.

http://www.dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html#usage

In the simplest case, without setting the grid's formatterScope, the grid's store can be accessed from within formatters via this.grid.store, e.g.:

function fmtItem(value) {
  var store = this.grid.store;
  return store.getValue(value, 'id') + ': ' + store.getValue(value, 'name');
}

Here's a really simple example of the above formatter in action:

http://jsbin.com/upico4/edit

There's also an example of this in one of the test pages, which creates an object to hold and scope the formatters:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_formatters.html

人事已非 2024-09-20 08:42:08

从 dojo 1.4 开始,您还可以从商店获取多个字段。应该看起来像这样:

    var layout = [{
        rows: [
          {name: 'Title', fields:['Title', 'url'], formatter:formatLink}
        ]}]

    function formatLink(value){
        return '<a href="'+value[1]+'">'+value[0]+'</a>';
    }

它使用“url”字段中的值来指向您的链接,并且显示的标题填充了商店中“标题”字段中的数据。

As from dojo 1.4 you can also get multiple fields from a store. Should look something like:

    var layout = [{
        rows: [
          {name: 'Title', fields:['Title', 'url'], formatter:formatLink}
        ]}]

    function formatLink(value){
        return '<a href="'+value[1]+'">'+value[0]+'</a>';
    }

That uses the value from the field "url" to point your link at and the displayed title is filled with the data from "Title" field in your store.

等风来 2024-09-20 08:42:08

您确定要格式化并且可能不使用 get 来代替吗?
当您使用格式化程序时,传递给函数的唯一值是字段表示的值。

但是,如果您要使用 get,则可以使用该项目来访问其他值。 (但是这样你就会失去排序)。

所以对于你的专栏有

   {
        field: 'id',
        name: 'Id',
        get: getFunction
    },

然后有

getFunction: function(index,row) {
    return row.id + row.name;
}

Are you sure that you want to format and maybe not use get instead?
When you use a formatter the only value that is passed to the function is the value that field represents.

However, if you were to use get instead, you could use the item to access the other values. (However then you will lose sorting).

So for your column have

   {
        field: 'id',
        name: 'Id',
        get: getFunction
    },

Then have

getFunction: function(index,row) {
    return row.id + row.name;
}
谁对谁错谁最难过 2024-09-20 08:42:08
function formatterFunction(val, rowIdx, cell){

  var name=this.name,
  field=this.field;

}
function formatterFunction(val, rowIdx, cell){

  var name=this.name,
  field=this.field;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文