您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

使用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

其他 2022/1/1 18:15:17 有469人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶