如何使用jqGrid Custom Formatter和' showlink'同时?列中的链接看起来不像链接

时间:2016-06-07 22:30:13

标签: javascript jquery html hyperlink jqgrid

我正在尝试将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函数,但我也不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

在我看来,你误解了自定义格式化程序的工作原理。 jqGrid创建网格的整个主体(<tbody>)作为字符串。因此,自定义格式化程序应该返回字符串,并且格式化程序内部的$(this).click不符合您的预期。 }元素在自定义格式化程序期间尚未存在

你没有写过,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 answerthe answer