- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 inlineNav
选项的 jqGrid 4.3.2。网格上的所有编辑都是使用 loadonce: true
和 clientArray
在本地完成的。当用户完成编辑时,他们单击表单上的保存按钮,整个网格就会发布到服务器。在大多数情况下,这非常有效,但我遇到了一个奇怪的情况。如果用户添加新行,然后在按 Enter 键确认编辑或取消选择新添加的行之前单击保存按钮,则即使在发布之前调用 saveRow
后,内联导航器上的添加按钮仍保持禁用状态重新加载。我在 saveRow
调用后尝试了 resetSelection
和 restoreRow
,但这些都不起作用。我的保存代码:
$("#submitButton").click(function () {
$("#theGrid").jqGrid('saveRow', $("#selectedRowId").val(), false, 'clientArray');
if (!ValidateGridData())
return false;
var rowData = $("#theGrid").jqGrid('getRowData');
var dataToSend = JSON.stringify(rowData);
$.ajax({
url: '@Url.Action("UpdateGridData")',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: dataToSend,
dataType: 'json',
async: false,
success: function (data, textStatus, jqXHR) {
$("#theGrid").jqGrid('setGridParam', { datatype: 'json' });
$("#theGrid").trigger('reloadGrid');
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Error saving data: ' + textStatus + " " + errorThrown);
}
});
return true;
});
有没有办法让内联导航器相信新行已保存并且用户可以添加更多行?
最佳答案
inlineNav 在导航器中添加的按钮方法的 ids 由网格 id 和相应的后缀构造而成:
要启用该按钮,您应该删除 'ui-state-disabled'
CSS 类:
var gridId = "list";
$("#" + gridId + "list_iladd").removeClass('ui-state-disabled');
要禁用该按钮,可以使用 .addClass('ui-state-disabled')
代替。
此外,我不建议您直接使用任何内联编辑方法,例如 saveRow
。在这种情况下,您可能不会遇到您试图解决的问题。看the answer中的代码。它将 editingRowId
和 myEditParam
定义为
var $grid = jQuery("#list"),
editingRowId,
myEditParam = {
keys: true,
oneditfunc: function (id) { editingRowId = id; },
afterrestorefunc: function (id) { editingRowId = undefined; }
};
然后将 inlineNav
与 myEditParam
参数一起使用:
$grid.jqGrid('inlineNav', '#pager',
{ edit: true, add: true, editParams: myEditParam,
addParams: {addRowParams: myEditParam } });
在这种情况下,您可以确保 editingRowId
为您提供当前编辑行的 ID,或者如果没有正在编辑的行,则为 undefined
。因此您可以使用 $(gridIdSelector + "_iledit").click();
而不是 editRow编辑当前选定的行。同样,您可以使用 setSelection如果需要,并模拟单击任何其他内联编辑导航器按钮。
更新:如果需要,您仍然可以在 onSelectRow
内部组合调用 saveRow
,但您可以首先使用变量 editRowId
和秒数使用 myEditParam
,这对于您使用的所有编辑方式都是常见:
onSelectRow: function (id) {
var $this = $(this);
if (editingRowId !== id) {
if (editingRowId) {
// save or restore currently editing row
$this.jqGrid("saveRow", editingRowId, myEditParam);
// or $this.jqGrid("restoreRow", editingRowId, myEditParam);
}
$this.jqGrid("editRow", editingRowId, myEditParam);
}
}
如果您需要内联编辑方法的一些其他选项,您可以将其包含在 myEditParam
中。您会发现 editingRowId
更适合用作 lastSel
变量,您可以在大多数内联编辑示例中找到该变量。
关于jquery - jqGrid 与 inlineNav : is there a way to force the Add button to re-enable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10886699/
我正在使用 jqgrid 的 inlineNav 选项向工具栏添加“添加”选项。我还使用操作格式化程序进行编辑和删除。当我添加新行时,新添加的行有一个编辑图标和一个取消图标,而保存图标位于添加旁边的工
我想在 JqGrid 下方创建 Add Edit Save 和 Delete 按钮。 jQuery(document).ready(function () { var lastSel = 0
我想使用JQGrid inlinenav“添加”和“编辑”功能。编辑功能在此代码中正常工作,但问题是 add 使用 editParams 中的属性。当我在添加模式中单击“保存”按钮时,它会转到edit
只要放入一个新网格,一切似乎都运行良好,除了一件事。使用基本内联,它为我使用 key: true 设置的列发送一个新的不正确的键值。这是数据库中的自动增量列,因此我只是不想在添加时发送此列的任何数据,
我正在使用带有 inlineNav 选项的 jqGrid 4.3.2。网格上的所有编辑都是使用 loadonce: true 和 clientArray 在本地完成的。当用户完成编辑时,他们单击表单上
我是一名优秀的程序员,十分优秀!