gpt4 book ai didi

jquery - 如何使用适当的事件初始化 jqGrid 以进行行重新排序(可排序)

转载 作者:行者123 更新时间:2023-12-01 07:26:42 24 4
gpt4 key购买 nike

我希望能够订阅在可排序拖放操作期间引发的事件(3.6 可排序行中的新增功能),因为我需要将此信息保留回存储。我已经尝试过 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jquery_ui_methods#drag_and_drop_rows_between_grids 的 onstop 和 onstart但它似乎只适用于放置目标是另一个表的情况。

谢谢你,斯蒂芬

栏目:

var col_names = ['Qty', 'SFC', 'Item Nbr', 'Brand', 'Product', 'Catalog', 'Price', 'UOM', 'Case', 'Remarks', 'Wt.', 'Par', 'Purchased', 'ProductId', 'SortPriority'];
var col_model = [
{ name: 'Quantity', index: 'Quantity', width: 22, sorttype: "number", editable: true, edittype: 'text', editoptions: { size: 10, maxlength: 15} },
{ name: 'ProductAttributes', index: 'ProductAttributes', width: 50 },
{ name: 'ItemNum', index: 'ItemNum', width: 50, align: "right" },
{ name: 'BrandName', index: 'BrandName', width: 100 },
{ name: 'ProducName', index: 'ProducName', width: 150 },
{ name: 'Catalog', index: 'Catalog', width: 100 },
{ name: 'Price', index: 'Price', width: 40, sorttype: "number", align: "right" },
{ name: 'UOM', index: 'UOM', width: 30 },
{ name: 'CasePack', index: 'CasePack', width: 30 },
{ name: 'PackageRemarks', index: 'PackageRemarks', width: 80 },
{ name: 'AveWeight', index: 'AveWeight', width: 30, align: "right" },
{ name: 'Par', index: 'Par', width: 25, align: "right", editable: true, edittype: 'text', editoptions: { size: 15, maxlength: 15} },
{ name: 'LastPurchaseDate', index: 'LastPurchaseDate', width: 40, align: "right" },
{ name: 'ProductId', index: 'ProductId', hidden: true, key: true },
{ name: 'SortPriority', index: 'SortPriority', hidden: true }
];

网格:

favoriteGrid = $('#favoriteGrid');

favoriteGrid.jqGrid({
url: '/xxx/yyy/',
datatype: 'json',
ajaxGridOptions: { contentType: "application/json" },
jsonReader: {
id: "ProductId",
cell: "",
root: function (obj) { return obj.rows; },
page: function () { return 1; },
total: function () { return 1; },
records: function (obj) { return obj.rows.length; },
repeatitems: true
},
colNames: col_names,
colModel: col_model,
pager: $('#favoritePager'),
pginput: false,
rownumbers: true,
rownumWidth: 25,
rowNum: 1000,
autowidth: true,
height: '500px',
sortable: true, // enable column sorting
multiselect: true, // enable multiselct
gridview: true,
ignoreCase: true,
loadonce: true, // one ajax call per
loadui: 'block',
loadComplete: function () {
var gr = $('#favoriteGrid');
fixGridSize(gr);
},
onSelectRow: function (id) {
if (id && id !== lastSel) {
favoriteGrid.restoreRow(lastSel);
lastSel = id;
}
favoriteGrid.editRow(id, true);
},
onstop: function (event, ui) {
alert("onstop");
}
}).jqGrid('navGrid', '#favoritePager',
{ add: false, edit: false, del: false, search: true, refresh: false },
{},
{},
{},
{ multipleSearch: true, showQuery: false },
{}).jqGrid('sortableRows').jqGrid('gridDnD');

编辑1:

从 jqGrid 生成的表是可排序的,所以我认为这是初始化后使用这些 jquery 函数的问题。

$('#favoriteGrid').bind("sortstart", function (event, ui) {
alert("start");
});

$('#favoriteGrid').bind("sortstop", function (event, ui) {
alert("stop");
});

最佳答案

这是个好问题!

要捕获列排序的结果,您应该使用 sortable 作为函数而不是 bool 值 true :

sortable: function (permutation) {
alert ('permutation=' + permutation.join(','));
}

参见 the demo 。如果您重新排序“客户”和“日期”列,您将收到警报消息

enter image description here

内部用于行号和多选复选框的“rn”和“cb”列位于第一个,索引分别为 0 和 1。“Client”列的索引为 2,“Date”列的索引为 3。到 permutation “Client”和“Date”列重新排序后的数组将为 [0, 1, 3, 2, 4, 5, 6, 7, 8, 9]

值得一提的是,如果您需要设置 jQuery UI Sortable 的某些选项,您应该使用 jqGrid sortable 参数的另一种格式:

sortable: {
update: function (permutation) {
alert ('permutation=' + permutation.join(','));
},
options: {
opacity: 0.8
}
}

参见the next demo:

enter image description here

更新:要监视行的重新排序,您可以执行以下操作:

favoriteGrid.jqGrid('sortableRows', {
update: function (ev, ui) {
alert ("The row with the id=" + ui.item[0].id +
" is moved. New row index is " + ui.item[0].rowIndex);
}});

参见 the demo 。您可以使用以下内容获取有关移动行的新位置之前和之后的行的更多详细信息

favoriteGrid.jqGrid('sortableRows', {
update: function (ev, ui) {
var item = ui.item[0], ri = item.rowIndex, itemId = item.id,
message = "The row with the id=" + itemId +
" is moved. The new row index is " + ri;
if (ri > 1 && ri < this.rows.length - 1) {
alert(message + '\nThe row is inserted between item with rowid=' +
this.rows[ri-1].id + ' and the item with the rowid=' +
this.rows[ri+1].id);
} else if (ri > 1) {
alert(message +
'\nThe row is inserted as the last item after the item with rowid=' +
this.rows[ri-1].id);
} else if (ri < this.rows.length - 1) {
alert(message +
'\nThe row is inserted as the first item before the item with rowid=' +
this.rows[ri+1].id);
} else {
alert(message);
}
}});

参见 the next demo

关于jquery - 如何使用适当的事件初始化 jqGrid 以进行行重新排序(可排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039780/

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