gpt4 book ai didi

javascript - JQGrid 自定义排序

转载 作者:搜寻专家 更新时间:2023-11-01 05:15:49 25 4
gpt4 key购买 nike

我有一个 JQGrid,其中填充了正常工作的数据。默认排序功能按预期工作。但是,我想按点击的列和名称列排序;每次。我认为 onSortCol 是我应该开始的地方,但文档中没有太多关于如何对表格内容进行排序的内容。理想情况下,我不想编写自己的排序算法,而只是以某种方式插入 JQGrid API。所有数据都在客户端上,我希望尽可能避免访问服务器。

这是我用来创建网格的代码:

$jqGrid = $('#people_SelectedContacts').jqGrid({
ajaxGridOptions: {
type: "POST"
},
url: 'AJAX/GetContacts',
datatype: "json",
postData: JSON.stringify({ ID: $('#ID').val() }),
loadonce: true,
sortable: true,
caption: "Selected Contacts",
hidegrid: false,
autowidth: true,
rowNum: 10000,
height: "100%",
loadui: 'block',
colNames: ['lecID', 'lrlID', 'mjID', 'Role', 'Name', 'Entity', 'Contact', 'D #', ''],
colModel: [
{ name: 'LECID', hidden: true },
{ name: 'LRLID', hidden: true },
{ name: 'MJID', hidden: true },
{ name: 'RoleLookupName', index: 'RoleLookupName' },
{ name: 'FullName', index: 'FullName' },
{ name: 'Entity', index: 'Entity' },
{ name: 'ContactInformation', index: 'ContactInformation' },
{ name: 'DNumber', index: 'DNumber' },
{ name: 'Remove', sortable: false, width: 25 }
],
jsonReader: {
root: 'ReturnValues.Contacts',
repeatitems: false
},
beforeProcessing: function (data, status, xhr) {
if (!data.ReturnValues.Contacts) {
data.ReturnValues.Contacts = new Array();
}
$.each(data.ReturnValues.Contacts, function (index, value) {
value.Entity = FormatAddress(value);
value.ContactInformation = FormatContact(value);
value.DNumber = FormatDocket(value);
});
},
gridComplete: function () {
var ids = $jqGrid.jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
removeButton = $('<span>').addClass('remove-contact jqui-button-fix');
$jqGrid.jqGrid('setRowData', ids[i], { Remove: $('<div>').append(removeButton).html() });
}
},
loadComplete: function (data) {

},
onSortCol: function (index, iCol, sortorder) {

}
});

最佳答案

在您的网格中,您有 5 列可见且可排序:'RoleLookupName'、'FullName'、'Entity'、'ContactInformation'、'DNumber'。从服务器加载网格数据后,数据类型将从 'json' 更改为 'local' 对应参数的行为 loadonce: true。从现在开始,排序将在本地进行。因为你没有定义 sorttype任何列中的属性都将使用默认的 sorttype: 'text'

我如何理解“RoleLookupName”、“Entity”等列中的数据可能包含重复项,因此您想通过主排序列(例如“RoleLookupName”)和第二列的组合对网格进行排序列(例如“全名”)。如果主排序列中有重复项,网格仍将按第二列中的第二个条件排序。要实现该行为,您应该使用自定义排序。您可以通过使用 sorttype 作为函数来实现它(参见 the answer )。

sorttype 作为函数的想法很简单。 sorttype 应该返回字符串或整数,它们应该而不是包含在主单元格中。例如,您可以如下定义“RoleLookupName”

{ name: 'RoleLookupName', index: 'RoleLookupName',
sorttype: function (cell, obj) {
return cell + '_' + obj.FullName;
}}

Another answer其中包括 the demo你能不能找到可能也有趣的理解。它展示了更高级的技术,不仅实现了自定义排序,还实现了自定义搜索。

关于javascript - JQGrid 自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com