在 dojo 数据网格中实现超链接

Posted

技术标签:

【中文标题】在 dojo 数据网格中实现超链接【英文标题】:Implementing a hyperlink within a dojo datagrid 【发布时间】:2014-08-04 12:15:07 【问题描述】:

这是我第一次使用数据网格,所以请原谅任何不清楚的地方。

我有在 dojo 数据网格 (dojox.grid.DataGrid) 中实现的 json 文本。

  var jsonStore = new dojo.data.ItemFileWriteStore( url: "xAgent.xsp");
  var layout = [
    cells:[ [ 
      field:'firstname', name:'First', 
      field:'lastname', name:'Last',
      field:'policy', name:'Policy',
      field:'lastaccessed', name:'Last Accessed'
      ] ], noscroll:false
    
  ];

  grid = new dojox.grid.DataGrid(
    store: jsonStore,
    structure: layout,
    rowsPerPage: 50,
    autoHeight: 50
  , '#id:gridNode');
grid.startup();

网格本身创建得非常好,所有数据都按需要显示,但我希望其中一个字段(具体为“策略”字段)链接到另一个页面。当我重定向时,我需要在“政策”字段中包含信息,因为政策编号将在下一页中使用。

换句话说,我希望我的表中的所有政策字段都有自己独特的外部链接,该链接将包含来自相应字段的政策编号。我能想到的最简单的方法是更改​​输入 DataGrid 结构参数的布局变量,但可能有更简单的方法。如果有人有任何想法,我将非常感激。

提前致谢。

【问题讨论】:

我几乎肯定可以做到这一点。您可以为网格创建 onclick 事件,并可以访问当前行中的数据。看这里xcellerant.net,我想你会发现布拉德有一个帖子。我自己用过。 【参考方案1】:

您可以使用格式化程序在网格内创建链接、dojo 按钮等。

Formatter 是一个被调用的 javascript 函数,它返回要在单元格中显示的值。数据存储中的值作为参数传递给函数。插入页面的返回值可以是任何合法的 html 甚至是 dijit 小部件。

因此,在您的情况下,将格式化程序添加到策略列

field:'policy', name:'Policy', formatter: createLink,

然后用必要的外部链接定义函数。例如:

function createLink(data)
    return ("<a href=policyinfo.jsp?policy="+data+">"+data+"</a>");

参考:http://dojotoolkit.org/reference-guide/1.10/dojox/grid/DataGrid.html#id3

【讨论】:

非常感谢您的回复。有没有办法引用“字段”将指定的值?我的 jsonStore 包含类似于“policy”:“0101”的内容,因此使用您的方法我需要以某种方式从“policy”字段获取信息到函数 createLink。我喜欢这个想法,但我再次面临一个问题,即我看不到如何引用该字段。如果这就像说“格式化程序:createLink(field.getValue())”那么简单,那将是完美的。你知道这样做的方法吗? @user3739102 是的。日期存储中的值作为参数传递给格式化程序函数。在示例中为data。无需在布局中指定参数。它将被隐式传递(?)。

以上是关于在 dojo 数据网格中实现超链接的主要内容,如果未能解决你的问题,请参考以下文章

在 Dojo 数据网格中添加一行

数据网格 Dojo 中的 href 单元格

自定义小部件中的 dojo 数据网格未呈现

Dojo 使用 JsonRestStore 重新加载网格数据

使用组合框值更改时的新存储值更新/刷新 dojo 数据网格

如何用 dojo 增强网格中的文本替换超链接?