我正在尝试将jqgrid的第一列中的变量链接到另一个页面。现在,变量看起来不像链接式OR独占(意思是无论我在哪里点击行,我都会被带到目标页面。)
我需要使用自定义格式化程序,因为我的搜索栏中的URL不应该更改(我在本地服务器上运行它)。但是使用自定义格式化程序,我似乎也无法使用' showlink' (当我没有使用自定义格式化程序时,最终似乎使我的数据看起来像链接一样)。当我将鼠标悬停在我的第一列中的数据上时,我想要手指光标,我现在所能得到的就是"我"。
有没有我可以同时使用两者 来自自定义格式化程序的格式化程序:' showlink' 和来自自定义格式化程序的格式化程序:returnHyperLink(名称)?我希望只能点击第一列的数据进入页面,我希望这些数据看起来像链接一样(不应该点击该行的任何地方)。
我的相关jqgrid代码是:
colNames:['Name','Status', 'Created On', 'Update By', 'Updated On', 'RetentionDays','ValidityTime','Edit'],
colModel:[
{
name: 'name', width:100,editable: true, edittype:'select',
formatter: returnHyperLink(name),
xmlmap: function (obj) {
return $(obj).attr('name');
}
},
我的功能 returnHyperLink 显示为:
function returnHyperLink(name){
$(this).click(function() {
$( "#contents" ).load("jsp/consumers.jsp");
console.log(this, "Hello world");
});
};
...好吧,如果所有这些代码都没有显示在代码框中,那么显然有问题。我以为我可以从一个href内部调用javascript函数,但我也不知道如何做到这一点。
答案 0 :(得分:0)
在我看来,你误解了自定义格式化程序的工作原理。 jqGrid创建网格的整个主体(<tbody>
)作为字符串。因此,自定义格式化程序应该返回字符串,并且格式化程序内部的$(this).click
不符合您的预期。 1>}元素在自定义格式化程序期间尚未存在。
你没有写过,jqGrid的哪个版本以及你使用的jqGrid的哪个分支。如果您使用free jqGrid,则可以使用<td>
的{{1}}回调选项:
onClick
如果您必须使用旧版本的jqGrid并且无法迁移到免费的jqGrid,那么您可以从here下载formatter: "showlink"
并使用formatter: "showlink", formatoptions: {
onClick: function (options) {
// this is DOM of the grid
// options.iCol is the column index
// options.iRow is the row index
// options.rowid is the rowid
// options.cm is the element from colModel
// options.cmName is the column name
// options.cellValue is the text from the <a>
// options.a - DOM element of the clicked <a>
// options.event - Event object of the click event
alert("it's clicked!");
}
}
,我在{ {3}}。另见the old answer。
如果您更愿意使用自定义格式化程序,则可以使用jQuery.jqGrid.dynamicLink.js
回调来实施formatter: "dynamicLink"
操作。有关详细信息,请参阅the answer和the answer。