jqGrid - 如何获取当前网格的标题?

jqGrid - how to get caption of the current grid?

我的页面上有多个 jqGrids。这些是动态创建的。我想从行点击中获取网格的标题。我看到 setCaption 方法但没有 getCaption。所以想知道有没有什么好的方法可以得到这个值?

我在 SO 或外部没有发现任何有用的 link。感谢任何帮助。

更新:

@Oleg 的解决方案帮助我解决了这个问题,他关于如何找到网格 ID 的评论让我 re-think 了解了我的问题并得到了解决方案:

zLoadLabResult() 动态生成网格。当用户单击复选框时,我想知道我正在构建的一些其他逻辑的网格标题。

function zLoadLabResults(fulldata) {
    fulldata = $.parseJSON(fulldata);
    $.each(fulldata, function (i, item) {
        var data = item.resultData;
        var colNames = item.colNames;

        var colModelsArray = [];
        for (var i = 0; i < colNames.length; i++) {
            var str;
            if (i === 0) {
                str = {
                    name: 'id',
                    width: 25,
                    editoptions: { value: "True:False" },
                    editrules: { required: true },
                    edittype: 'checkbox',
                    formatter: zCheckboxFormatter,
                    formatoptions: { disabled: false },
                    editable: true,
                    sortable: false
                };
            } else {
                str = {
                    name: colNames[i],
                    index: colNames[i],
                    width: '100px'
                };
            }
            colModelsArray.push(str);
        }

        var gridName = "grid-" + item.testName;
        $("#gridcontainer").append("<table id='grid-" + item.testName + "' class='grid'></table>");

        $("#" + gridName).jqGrid({
            //url: "user.json",
            //datatype: "json",
            datatype: "local",
            colNames: colNames,
            colModel: colModelsArray,
            height: "auto",
            width: "auto",
            caption: item.testName
        });

        var names = colNames;
        var mydata = [];

        for (var i = 0; i < data.length; i++) {
            mydata[i] = {};
            for (var j = 0; j < data[i].length; j++) {
                mydata[i][names[j]] = data[i][j];
            }
        }

        for (var i = 0; i <= mydata.length; i++) {
            $("#" + gridName).jqGrid('addRowData', i + 1, mydata[i]);
        }
        for (var i = 0; i <= colNames.length; i++) {
            $("#" + gridName).jqGrid("setLabel", colNames[i], "", { "text-align": "left" });
        }
    });
};

function zCheckboxFormatter(cellvalue, options, rowObject) {
    return '<input type="checkbox" class="selectedId" name="Id-' + cellvalue + '">';
};

我将以下事件挂接到复选框,该复选框通过添加 Oleg 的解决方案来实现:

$('table[id^="grid-"]').on("click", "td > input", function (e) {
    var grid = "#" + $(e.target).closest("table").attr("id");
    var caption = $(grid).jqGrid("getGridParam", "caption");

    var checked = $(e.target).is(":checked")

    var rowId = $(e.target).closest("tr").attr("id")
    rowData = $(grid).getRowData(rowId);        
});

如果您不对网格标题的内容进行任何手动操作,那么您只需为每个网格使用 caption 选项。您可以使用 getGridParam:

获取每个网格的标题
var caption1 = $("#grid1").jqGrid("getGridParam", "caption");

如果你想访问低级别的标题,那么你可以使用以下内容

var caption1 = $($("#grid1")[0].grid.cDiv).children("span.ui-jqgrid-title").html();