我们正在使用Struts2 jQuery插件来显示帐户摘要,如下所示
AccountNumber Blance
87666 1,212$
31234 4,562$
12344 2,442$
用户可以点击帐号进入下一页。应通过Ajax加载下一个帐户摘要页面。
网格标记是:
<sjg:grid id="gridtable" dataType="json"
href="%{url}" gridModel="gridModel" >
<sjg:gridColumn name="accNo" title="AccountNo"
formatter="linkBulider" />
<sjg:gridColumn name="balance" title="Balance" />
网址必须是ajax调用,因此linkBuilder
不能简单地返回
<a href="account-summary?id"=row.accNo>
要构建网址,我们使用了如下的java脚本:
function linkBulider(cellvalue, options, row) {
return "<a id=account"+row.accNo +" href=javascript:void(0)>" + cellvalue + "</a>";
}
这将使
<a id='account87666' href='javascript:void(0)'>87666</a>
<a id='account31234' href='javascript:void(0)'>31234</a>
<a id='account12344' href='javascript:void(0)'>12344</a>
处理这些链接是个问题! 我写下面的东西,但它不起作用
$(document).ready(function() {
$.struts2_jquery.bind($("a[id^='account']"), {
"jqueryaction" : "anchor",
"targets" : "content",
"href" : "/show-account-summary.action" //How should I pass the account number here?!
});
});
我的问题
答案 0 :(得分:0)
这是答案......
首先,我们需要将以下属性添加到网格标记onGridCompleteTopics='addLinks'
然后添加addLinks
事件订阅,新linkBuilder
如下:
$(document).ready(function() {
linkBulider = function(cellvalue, options, row) {
return "<a class='accounts' account-num=" + row.accNo
+ " href=javascript:void(0)>" + cellvalue + "</a>";
};
$.subscribe('addLinks', function(event, data) {
$(".accounts").click(function() {
var acountNum = $("a.accounts").attr("account-num");
if (acountNum != "") {
$.ajax({
type : "Post",
url : "/account/account-summary.action",
data:{'accNo':acountNum},
success : function(data) {
$('#content').html(data);
}
});
}
});
});
});
请注意,如果您不添加onGridCompleteTopics
并尝试绑定文档上的点击,则无法使用。因为这样,链接没有准备好,$(".accounts").click
将不适用于任何链接。
对于网址,您可以使用以下操作代替硬编码:
<s:url var="url"
action="account-summary" namespace="account" />
然后在java脚本中:
url : "${url}"