在 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 数据网格中实现超链接的主要内容,如果未能解决你的问题,请参考以下文章