Javascript jqGrid可排序行,仅允许对某些行进行排序
我有一个启用了Javascript jqGrid可排序行,仅允许对某些行进行排序,javascript,jquery,jqgrid,jquery-ui-sortable,Javascript,Jquery,Jqgrid,Jquery Ui Sortable,我有一个启用了SortableRows选项的jqGrid。以前我一直允许对行进行排序。当删除行时,通过ajax调用更新数据库。为此,我一直在使用update选项 现在我需要实现某些行不允许的排序。即,对于其中一个可见列,列值为“1”的行。我已经成功地阻止了ajax更新,但是从视觉上看,行仍然会在新位置被删除。我需要直观地将行还原到原始位置 到目前为止,我已经有了这段代码,它可以工作,但是带注释的区域是我被困在如何将行恢复到先前位置的地方 jQuery("#all_driver_runs").jq
SortableRows
选项的jqGrid。以前我一直允许对行进行排序。当删除行时,通过ajax调用更新数据库。为此,我一直在使用update
选项
现在我需要实现某些行不允许的排序。即,对于其中一个可见列,列值为“1”的行。我已经成功地阻止了ajax更新,但是从视觉上看,行仍然会在新位置被删除。我需要直观地将行还原到原始位置
到目前为止,我已经有了这段代码,它可以工作,但是带注释的区域是我被困在如何将行恢复到先前位置的地方
jQuery("#all_driver_runs").jqGrid('sortableRows', {
update: function (ev, ui) {
//first check the value of the 'placed_in_runs' column
if ($('#all_driver_runs').jqGrid('getRowData', ui.item[0].id)['placed_in_run'] !== "1") { //here update the database
if (!ui.item[0].previousSibling) {
$.post("scripts/update_driver_run_sort.php", {
this_one: ui.item[0].id,
prev: 'none',
next: ui.item[0].nextSibling.id
});
} else if (!ui.item[0].nextSibling) {
$.post("scripts/update_driver_run_sort.php", {
this_one: ui.item[0].id,
prev: ui.item[0].previousSibling.id,
next: 'none'
});
} else {
$.post("scripts/update_driver_run_sort.php", {
this_one: ui.item[0].id,
prev: ui.item[0].previousSibling.id,
next: ui.item[0].nextSibling.id
});
}
} else {
/*
*no DB update, and now I need to revert to previous position here ???
*/
}
}
});
由于
sortableRows
与jQueryUI的sortable小部件兼容,因此在加载行时,可以通过向行添加一个类,然后在sortableRows
选项的项(或取消
)成员中指定它来阻止行的可排序性
因此,假设该类是不可移动的
,您可以将“.jqgrow:not(.unmovable)”
传递给可排序行
。例如:
$('#all_driver_runs').jqGrid('sortableRows', {
items: ".jqgrow:not(.unmovable)",
/* remaining options if needed */
});
要将类添加到行中,请参见此。由于可排序行
与jQueryUI的可排序小部件兼容,您可以通过将类添加到行中,然后在项中指定它(或取消
)来阻止行在加载时可排序sortableRows
”选项的成员
因此,假设该类是不可移动的
,您可以将“.jqgrow:not(.unmovable)”
传递给可排序行
。例如:
$('#all_driver_runs').jqGrid('sortableRows', {
items: ".jqgrow:not(.unmovable)",
/* remaining options if needed */
});
要将类添加到行中,请参见此。这是一些好东西,谢谢您的帮助!很好。我遇到了这个设置的问题。现在,如果有两个不可移动的行彼此相邻,那么不可能在它们之间放置一个可移动的行。我仍然希望能够在两个不可移动的行之间放置一个可移动的行。请参阅Cancel
成员。检查“DSK1”列不可排序,而“APPR”列不可排序。试着移动“APPR”,看看这是否是你想要的。是的,谢谢你的帮助,我找到了cancel
方法,它似乎工作得很好。不幸的是,当我使用cancel
时,JS正在搞乱另一个方法。。。哦,很好,将其与这里描述的jqGridrowattr
配置选项结合起来:您可以根据行数据轻松限制拖动:)这是一些好东西,感谢您的帮助!很好。我遇到了这个设置的问题。现在,如果有两个不可移动的行彼此相邻,那么不可能在它们之间放置一个可移动的行。我仍然希望能够在两个不可移动的行之间放置一个可移动的行。请参阅Cancel
成员。检查“DSK1”列不可排序,而“APPR”列不可排序。试着移动“APPR”,看看这是否是你想要的。是的,谢谢你的帮助,我找到了cancel
方法,它似乎工作得很好。不幸的是,当我使用cancel
时,JS正在搞乱另一个方法。。。哦,很好地将其与这里描述的jqGridrowattr
configuration选项结合起来:您可以根据行数据轻松地限制拖动:)