根据另一列值禁用jqgrid中的超链接

Posted

技术标签:

【中文标题】根据另一列值禁用jqgrid中的超链接【英文标题】:Disable hyperlink in jqgrid based on another column value 【发布时间】:2017-05-26 05:50:19 【问题描述】:

我有一个 jqgrid,其中第一列有一些数字,它是一个超链接。 单击时我使用formatter:linkfmatter 并使用ajax 调用将rowid 发送到后端。

现在我的要求是,如果列 B 为 0,我希望列 A 成为超链接,但当该特定行的列 B 为 1 时,我希望禁用列 B 超链接。

有人可以告诉我是否可以使用 javascript-jquery 并指出正确的方向吗? 这是我的 jqgrid 代码

$("#tblJQGridCCVT").jqGrid(
    url: "@Url.Action("MyAction", "MyController")" + "?Parameters=" + Params + "",
    datatype: "json",
    mtype: 'GET',
    cache: false,
    async: false,
    colNames: ['A', 'B', 'C', 'D', 'E','F', so on...],//nearly 30 columns
    colModel: [
         name: 'A', index: 'A', width: 150, edittype: 'select', formatter: linkFmatter ,
         name: 'B', index: 'B', width: 150 ,
         name: 'C', index: 'C', width: 150 ,
         name: 'D', index: 'Updated By', width: 150 ,
         name: 'E', index: 'E', width: 150 ,
         name: 'F', index: 'F', width: 150 ,
        So on 
            ...
            ...
            ...
    ],
    pager: $('#pager'),
    height:300,
    rowNum: 10,
    sortorder: "desc",
    sortname: 'ResponseId',
    viewrecords: true,
    sortable: true,
    loadonce: true, 
    forceClientSorting: true,
    ignoreCase: true,
    caption: "Summary"
);
$("#tblJQGridCCVT").jqGrid('navGrid', '#pager',  view: false, del: false, add: false, edit: false, search: true, refreshtext: "Refresh" ,  closeOnEscape: true, multipleSearch: true, closeAfterSearch: true , , , );
$("#tblJQGridCCVT").jqGrid('filterToolbar',  stringResult: true, searchOnEnter: false, defaultSearch: 'cn' );

function linkFmatter(cellvalue, options, rowObject) 
    var selectedCellValue = cellvalue;
    var selectedRowId = options.rowId;
    return '<a href="javascript:MethodJS(' + selectedRowId + ')" style="color: #3366ff" id="' + selectedRowId + '" >' + selectedCellValue + '</a>';



function MethodJS(selectedRowId) 
    $.ajax(
        async: false,
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "@Url.Action("GetDetailedViewOfResponsesForEdit", "ViewResponseDetailsCCVT")",
        data: "RowId:'" + selectedRowId + "'",
        success: function (Result) 
            if (Result == "Success") 
                var url = window.location.href;
                window.location.href = "@Url.Action("ResponseDetailsEditForCCVT", "ViewResponseDetailsCCVT")";
             
        
    );

【问题讨论】:

【参考方案1】:

rowObject 参数中有行数据。你可以像下面这样使用它。

function linkFmatter(cellvalue, options, rowObject) 
    if (rowObject.B == 0) 
        var selectedCellValue = cellvalue;
        var selectedRowId = options.rowId;
        return '<a href="javascript:MethodJS(' + selectedRowId + ')" style="color: #3366ff" id="' + selectedRowId + '" >' + selectedCellValue + '</a>';
    

    return cellvalue

DEMO HERE

【讨论】:

以上是关于根据另一列值禁用jqgrid中的超链接的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个仅在 chrome 中打开并使用禁用标志的超链接

删除默认选择而不禁用 Web 视图的超链接和按钮

Outlook 附件的超链接

如何使 Mat-Table 中的列值成为超链接 [重复]

Access App中的超链接控制

如何使用Python来批量处理Excel中单元格的超链接?