2

我的代码中有以下内容:

      { name: 'ID', index: 'ID', width: 40 , formatter: 'showlink', search: false, formatoptions: { baseLinkUrl: '/Program/EditMicro'} },

当我单击 PNum 时,会发生以下情况:我的控制器会执行以下操作:

    /Program/EditMicro

我想要的是通过 Jquery 捕获有关所选内容(选择了什么 ID)的信息,因为我想做一些 json,然后将其发送到以下 ActionResult

    /Program/EditMicro

因此,回顾一下,是否有任何方法可以捕获单击的超链接的值是什么,然后我可以在 Jquery 中捕获它。

先感谢您

4

2 回答 2

6

在大多数情况下,使用类似的东西就足够了

formatter: "showlink",
formatoptions: {
    baseLinkUrl: "/Program/",
    showAction: "EditMicro",
    idName: "myId"
}

在这种情况下,链接将像这样生成

<a href="/Program/EditMicro?myId=123">text from the cell</a>

如果您在操作中有行的 id,您可以直接从数据库中获取您需要的任何其他附加信息。

或者,您可以使用答案中描述的简单技巧。你定义 CSS 类

.myLink { text-decoration: underline; cursor: pointer; }

然后您可以使用自定义格式化程序,如下所示

formatter: function (cellValue, options, rowObject) {
    return "<span class='myLink'>" + cellValue + "</span>";
},
cellattr: function () {
    return " title=\"Click here to go to EditMicro\"";
}

在这种方式下,您将生成<span>哪些用户喜欢的链接。beforeSelectRow您可以使用或onCellSelect回调捕获单元格上的单击事件。例如

beforeSelectRow: function (rowid, e) {
    var $td = $(e.target).closest("td"),
        iCol = $.jgrid.getCellIndex($td[0]);
    if (this.p.colModel[iCol].name === 'note') {
        window.location = "/Program/EditMicro/" +
            encodeURIComponent(rowid);
        return false;
    }
}

如果需要,您可以使用getColgetRowData从单击的行中获取任何其他数据,并将信息附加到目标 URL。

于 2013-01-26T13:46:01.603 回答
0

您可以将以下内容附加到您的 jqGrid 声明中,以防止触发默认单击操作。

.click(function (event) { event.preventDefault(); })

然后,您可以通过执行类似您自己的单击事件处理程序的操作

$('a').click(function () { //ToDo: Extra actions before submitting to controller });

您还可以构建您自己的自定义格式化程序,以便在您将要显示的超链接中添加额外的信息,以便在构建网格时完成这项工作。

编辑:工作示例,其中我禁用了默认单击功能并绑定我自己的以显示警报(作为示例,显示您将在哪里编写自己的函数来完成您想要做的额外工作)。 http://jsfiddle.net/QEzhr/33/

于 2013-01-25T20:05:01.883 回答