当前位置: 首页 > 面试题库 >

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

简宏义
2023-03-14
问题内容

我创建了一个jqGrid,其中包含一些字段,例如:

job_id,姓名等

我正在尝试做的是,以便在单击job_id列中的值时,它将把它们重定向到:

job.php?job_id =(他们点击的值)

我首先尝试使用以下作为我的colModel:

{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
  formatoptions:{baseLinkUrl:'job.php'}, width:50, align:'center' }

但这导致重定向到:

job.php?job_id =(row_id)

我做了一些搜索,发现了该软件的开源版本的开发人员的帖子,建议使用以下colModel和其他JS:

{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
  formatoptions:{baseLinkUrl:'#'}, width:50, align:'center' }

loadComplete: function() {
    var myGrid = $("#home_list");
    var ids = myGrid.getDataIDs();
    for (var i = 0, idCount = ids.length; i < idCount; i++) {
        $("#"+ids[i]+" a",myGrid[0]).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;
                location.href="job.php?id="+text;
            }
            e.preventDefault();
        });
    }   
}

但这与IE不兼容。除此之外,当在jqGrid中显示大量行时,加载需要非常长的时间,例如500行需要5秒以上的时间。

我将继续努力,但这是其他人做的吗?


问题答案:

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

我同意评论家关于代码性能的评论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



 类似资料:
  • 我目前无法获得双链接列表的反向函数来正确处理作业,我已经阅读了其他线程并在谷歌上搜索,但通常不同的是,我的问题以常量传递,它返回一个“dlist”。教授提供了一个“代码测试仪”,它说我的代码在执行“反向(反向(dlist c))”时,并不等于它本身就是“c”。[反转两次并不等于它本身]。 dlist类是: 这是反向函数: 每个数据列表节点都有一个指向前一个节点的指针和一个指向下一个节点的指针。dl

  • 问题内容: 我不确定这是否可能。但是我想知道是否有人知道如何使超链接传递一些变量并使用POST(如表单)而不是GET。 问题答案: 您使用隐藏的输入创建表单,这些输入包含要发布的值,将表单的 操作 设置为目标url,并将表单方法设置为 post 。然后,当您单击链接时,触发提交表单的JS函数。 有关示例,请参见此处。本示例使用纯JavaScript,没有jQuery-如果您不想安装比现有更多的东西

  • 问题内容: 使用Java,如何从给定的网页中提取所有链接? 问题答案: 将Java文件下载为纯文本/ html格式,并通过Jsoup或 html clean传递,两者相似,甚至可以用于解析格式错误的html 4.0语法,然后可以使用流行的HTML DOM解析方法,例如getElementsByName(“ a”)或在jsoup中它甚至很酷,您只需使用 并找到所有链接,然后使用 取自http://j

  • 我想从这个http链接获取值: 我尝试实现这个Spring代码:

  • 问题内容: 如何检索网页链接并使用Python复制链接的URL地址? 问题答案: 这是在中使用类的一小段代码:

  • 我正在创建一个web应用程序,允许学生通过HTML表单注册(完成了这部分内容),并将他们的数据存储在数据库中(完成了)。我正在使用PHP/MySQL来编写这个。 我的想法是,我有一个‘后端’将允许管理员搜索一个学生的名字,最后,或全名(这是完成),并显示一个学生名单在下一页。(另已完成)。学生列表将是单独的超链接。 我的页面布局是: BackendHome.php 具有搜索栏和搜索按钮 searc