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

car*_*rds 6 javascript dojo datagrid xpages

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

我有一个在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();
Run Code Online (Sandbox Code Playgroud)

网格本身创建得非常好,所有数据都会根据需要显示,但我希望其中一个字段(特定的"策略"字段)链接到另一个页面.当我重定向时,我需要在'policy'字段中包含信息,因为策略编号将在下一页中使用.

换句话说,我希望表中的所有策略字段都有自己唯一的外部链接,该链接将包含来自相应字段的策略编号.我能想到的最简单的方法是通过更改提供给DataGrid结构参数的布局变量,但可能有一种更简单的方法.如果有人有任何想法我会非常感激.

提前致谢.

rob*_*bin 4

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

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

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

{field:'policy', name:'Policy', formatter: createLink},
Run Code Online (Sandbox Code Playgroud)

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

function createLink(data){
    return ("<a href=policyinfo.jsp?policy="+data+">"+data+"</a>");
}
Run Code Online (Sandbox Code Playgroud)

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

  • @user3739102 是的。日期存储中的值作为参数传递给格式化程序函数。在示例中它是“数据”。布局中无需指定参数。它将被隐式传递(?)。 (2认同)