带有 Fancybox 的 JqGrid - 获取单元格对象

JqGrid with Fancybox - get cell object

使用 jqGrid 中的以下内容:

 colModel: [
            {name:"",index:"",width:100},
            {name:"diagnosis",index:"diagnosis",width:100,formatter:fancyBoxFormatter},
            {name:"prescription", index:"prescription",width:100,formatter:fancyBoxFormatter}, 
            {name:"tests",index:"tests",width:100,formatter:fancyBoxFormatter},
            {name:"imaging",index:"imaging",width:100,formatter:fancyBoxFormatter},
            {name:"generic",index:"generic",width:100,formatter:fancyBoxFormatter},
            {name:"referral",index:"referral",width:100,formatter:fancyBoxFormatter},
            {name:"management",index:"management",width:100,formatter:fancyBoxFormatter},
            {name:"completed",index:"completed",width:100}
            ], 

然后:

function fancyBoxFormatter(cellvalue, options, rowObject) {

    var result,
        link,
        fancyBoxHTML,
        fancyBoxContent;

    link = "<a class=\"fancybox\" href=\"#data" + options.rowId + "\">" + cellvalue + "</a>";
    fancyBoxContent = cellvalue;
    fancyBoxHTML = "<div style=\"display:none\"><div id=\"data" + options.rowId + "\">" + fancyBoxContent + "</div></div>";
    return link + fancyBoxHTML;
}

这会在 Fancybox 中为行中的所有单元格显示相同的内容(基于 rowID...)如何将此功能更改为单个单元格 ID,而不仅仅是整行?

请在所有关于jqGrid的问题中写上你使用(可以使用)的jqGrid的版本和你使用的forkfree jqGrid, commercial Guriddo jqGrid JS 或版本 <=4.7 的旧 jqGrid)。

自定义格式化程序fancyBoxFormatteroptions参数包含rowIdcolModelgidposrowData 属性(rowData 仅存在于免费的 jqGrid 分支中)。因此你可以使用,例如,

function fancyBoxFormatter (cellvalue, options) {
    return "<a class=\"fancybox\" href=\"#data" +
        options.rowId + "_" + options.colModel.name + "\">" + cellvalue + "</a>" +
        "<div style=\"display:none\"><div id=\"data" +
        options.rowId + "_" + options.colModel.name + "\">" +
        cellvalue + "</div></div>";
}

此外,您必须修复第一列的 name 属性。不能使用空 name(参见 name:"")。您可以使用 any 唯一值 name 来保存 HTML5/CSS 中存在的规则(例如没有空格)。

我建议您另外从所有列中删除不需要的 index 属性和常用 width:100 选项。您可以使用 jqGrid 的 cmTemplate: {width: 100} 选项,而不是在每一列中放置 width:100