【问题标题】:Implementing a hyperlink within a dojo datagrid在 dojo 数据网格中实现超链接
【发布时间】: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,我想你会发现布拉德有一个帖子。我自己用过。

标签: javascript datagrid dojo xpages


【解决方案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。无需在布局中指定参数。它将被隐式传递(?)。
猜你喜欢
  • 1970-01-01
  • 2020-05-22
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2012-01-12
相关资源
最近更新 更多