jqGrid filterToolbar 仅适用于某些列
Posted
技术标签:
【中文标题】jqGrid filterToolbar 仅适用于某些列【英文标题】:jqGrid filterToolbar only works with some columns 【发布时间】:2020-10-24 23:13:16 【问题描述】:当我尝试在“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);
我得到以下结果:
这是展开的对象:
【问题讨论】:
这是因为您使用了自定义格式化程序。该格式化程序返回您自己的值,而本地搜索是对存储在数据数组中的本地数据执行的。换句话说 - 网格不是在网格中显示的值上执行搜索,而是在这些存储到数据数组中的值上执行搜索。 感谢您的回复。那么我该怎么办呢? 将这些值首先放入响应中。您将数据类型用作函数,因此将格式化的值放在这里。 我究竟要写什么才能将格式化的值放入数据类型函数中?您能写一个答案,以便我将其标记为正确吗? 【参考方案1】:你使用一个函数来加载数据:
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 循环中并更改其值之前,如果可能的话,最好在服务器上执行此操作
【讨论】:
我知道我可以使用console.log("thegrid:" + thegrid.innerHTML);
打印出网格数据,但我不明白您所说的“循环该列并更改其值”是什么意思
data.d.results 是包含网格数据的对象数组(更好的对象)。通常这个对象有行,即网格行。每行包含一组名称:值对,对应于网格单元格。如果您在 addJSONData 之前执行 console.log(data.d.results),您将看到将被放入网格的源。因此,在将其放入网格之前,您可以在此处更改值。
对不起,我无法从中得到任何东西
您能否在函数 loadGridData 中的 thegrid.addJSONData 之前做一个 console.log(data.d.results) 并给我一个部分或演示结果?
console.log( data.d.results )
导致[object Object],[object Object]
,但我编辑了帖子。 (见上文)以上是关于jqGrid filterToolbar 仅适用于某些列的主要内容,如果未能解决你的问题,请参考以下文章
jqGrid filterToolbar():无法读取未定义的属性“length”
jQgrid filterToolbar 因 searchOnEnter 而失败