jqGrid filterToolbar 仅适用于某些列

jqGrid filterToolbar only works with some columns

当我尝试在“Erstellt Von”列中搜索字符串 Test 时,我没有得到任何结果。控制台也没有错误。

这是我使用的代码部分:

var colUserTemplate = {
    width: 160, align: 'left',
    formatter: function (cellvalue, options, rowObject) {
        return "Test";
    }
}

在另一专栏中,过滤效果非常好:

这是网格的加载方式和 filterToolbar:

function loadGrid(listname, query, divname, colnames, colmdodel, showFilter, showExcelExport) {

    $("#" + divname).jqGrid({
        datatype: function () { loadGridData(listname, query, divname); },
        colNames: colnames,
        colModel: colmdodel,
        height: "100%",
        loadonce: true,
        rowNum: 9999,
        gridComplete: function () {
            $("#" + divname + "no").html(" [" + $("#" + divname).jqGrid('getGridParam', 'records') + "]");
            $("#" + divname).jqGrid('setGridParam', { datatype: 'local' });
        },
        ondblClickRow: function (rowid, iRow, iCol, e) {
            onDoubleClickGrid(rowid, iRow, iCol, e, divname, listname);
        }
    });

    if (showFilter) {
        $("#" + divname).jqGrid('filterToolbar', {
            autosearch: true,
            stringResult: false,
            searchOnEnter: true,
            defaultSearch: "cn",
        });
    }
}

我试过使用

if (showFilter) {
    $("#" + divname).jqGrid('filterToolbar', {
        autosearch: true,
        stringResult: true,
        searchOnEnter: true,
        defaultSearch: "cn", ignoreCase: true
    });
}

但它并没有改变任何东西。

想看的话here's the full code.

几个小时以来我们一直在努力解决这个问题,非常感谢您的帮助!

编辑:

写这篇文章时:

var thegrid = $("#" + divname)[0];
console.log("data.d.results: " + data.d.results);
thegrid.addJSONData(data.d.results); //Binding data to the grid
console.log("thegrid:" + thegrid.innerHTML);

我得到以下结果:

这是展开后的对象:

您使用函数加载数据:

function loadGridData(listname, query, divname) {

$.ajax({
    url: "/tools/AKG/_api/web/lists/getbytitle('" + listname + "')/Items?" + query,
    type: "GET",
    headers: { "Accept": "application/json;odata=verbose" },
    success: function (data, textStatus, xhr) {
        var thegrid = $("#" + divname)[0];
        thegrid.addJSONData(data.d.results); //Binding data to the grid
    },
    error: function (xhr, textStatus, errorThrown) {
        alert("error:" + JSON.stringify(xhr));
        $('#' + divname + 'records').html(" [0]");
    }
});
}

在成功函数中 data.d.results 包含您的网格数据。在将此数据放入 addJSONData 之前循环遍历该列并更改其值,或者如果可能的话最好在服务器上进行