3 回答
TA贡献1828条经验 获得超3个赞
我也有类似情况。感谢Oleg在上面的出色示例,它几乎解决了问题。我需要做一点改进。我的网格是一个有负载的网格,大约有40行,每页10条。上面使用的getCol方法仅返回当前页面的列值。但是我想用整个数据集中的唯一值填充过滤器。因此,对函数getUniqueNames进行了一些修改:
var getUniqueNames = function(columnName) {
// Maybe this line could be moved outside the function
// If the data is really huge then the entire segregation could
// be done in a single loop storing each unique column
// in a map of columnNames -> unique values
var data = grid.jqGrid('getGridParam', 'data');
var uniqueTexts = [], text, textsMap = {}, i;
for (i = 0; i < data.length; i++) {
text = data[i][columnName];
if (text !== undefined && textsMap[text] === undefined) {
// to test whether the texts is unique we place it in the map.
textsMap[text] = true;
uniqueTexts.push(text);
}
}
// Object.keys(textsMap); Does not work with IE8:
return uniqueTexts;
}
TA贡献1811条经验 获得超6个赞
我只是自己做的。感觉有点像骇客,但确实有效!
创建了一个新的“ navButtonAdd”,并为“标题”添加了用于下拉菜单的html代码。
onclickButton函数不包含任何内容。
然后,我创建了一个onchange函数来处理网格的重新加载(值更改时)。
$('#myGrid').jqGrid('navButtonAdd', '#myGrid_toppager', {
caption: "<select id='gridFilter' onchange='ChangeGridView()'><option>Inbox</option><option>Sent Messages</option></select>",
title: "Apply Filter",
onClickButton: function () {
}
});
function ChangeGridView() {
var gridViewFilter = $("#gridFilter").val();
$('#myGrid').setGridParam({ datatype: 'json', url: '../../Controller/ActionJSON', postData: { msgFilter: gridViewFilter } });
$('#myGrid').trigger("reloadGrid");
};
希望这可以帮助!
- 3 回答
- 0 关注
- 846 浏览
添加回答
举报