使用GET从jqGrid中的列值链接到新页面

使用GET从jqGrid中的列值链接到新页面,第1张

使用GET从jqGrid中的列值链接到新页面

您使用了我的旧答案中的代码示例,因此我决定我应该回答您的问题。

我同意评论家关于代码性能的评论

loadComplete
。因此,您可以向我+1。
$("#"+ids[i]+" a",myGrid[0])
长循环内部的构造可以非常缓慢地工作。如果使用以下方法,则可以轻松解决问题

var getColumnIndexByName = function (columnName) {    var cm = $(this).jqGrid("getGridParam", "colModel"), l = cm.length, i;    for (i = 0; i < l; i++) {        if (cm[i].name === columnName) { return i; // return the index        }    }    return -1;};var myGrid = $("#list");myGrid.jqGrid({    ...    loadComplete: function () {        var i = getColumnIndexByName.call(this, 'Subcategory');        // nth-child need 1-based index so we use (i+1) below        $("tbody>tr.jqgrow>td:nth-child(" + (i+1) + ")>a", this).click(function (e) { var hash=e.currentTarget.hash;// string like "#?id=0" if (hash.substring(0,5) === '#?id=') {     var id = hash.substring(5, hash.length);     var text = this.textContent || this.innerText;     alert("clicked the row with id='"+id+"'. link contain '"+text+"'");     location.href = "http://en.wikipedia.org/wiki/" + text; } e.preventDefault();        });    }});

您可以看到该演示版的改进版本与原始演示版完全一样。为了展示该方法在1000行上的性能,我创建了另一个演示。可以看到,新方法可以快速运行。

现在回到您的主要问题。表现最好的,如果你写你的,我们将得到自定义格式和unformatter而不是预先格式化的使用showlink。该代码可以是关于以下内容:

formatter: function (cellvalue, options, rowObject) {    return "<a href="job.php?job_id=" + rowObject.job_id + "">" + cellvalue + "</a>";},unformat: function (cellvalue, options, cellobject) {   return cellobject.job_id;}

确切的代码取决于

datatype
您使用的是,是否使用的
loadonce:true
以及
jsonReader
使用的代码。例如,
rowObject
在您的情况下就是array,而您必须使用相应数据字段(如
rowObject[4]
)的数组索引
rowObject.job_id



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5020466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存