2012-03-15 148 views
1

我确定我的问题已在某个地方解决,但我已经研究了一段时间,似乎无法找到我正在寻找的答案。关于JqGrid的问题和问题

  • 当使用inlineNav功能时,是否有“删除”选项?我还没有发现任何,所以为了使用它,我必须同时使用navGridinlineNav功能创建的网格,就像这样:
$("#attributeEditList").jqGrid({ 
      datatype: "local", 
      height: 150, 
      colNames: ['rowid', 'Vendor', 'Category', 'Key', 'Value', 'Flags', 'Status'], 
      colModel: [ 
         {name: 'rowid', index: 'rowid', hidden: true, key: true}, 
         {name: 'vendorCode', index: 'vendorCode', hidden: true}, 
         {name: 'category', index: 'category', width: 120, editable: true, editrules:{required: true} }, 
         {name: 'key', index: 'key', width: 120, editable: true, editrules:{required: true} }, 
         {name: 'value', index: 'value', width: 200, editable: true, editrules:{required: true} }, 
         {name: 'flags', index: 'flags', width: 80, editable: true, editrules:{required: true, integer: true} }, 
         {name: 'status', index: 'status', hidden: true } 
         ], 
      sortname: "category", 
      viewrecords: true, 
      caption: "Attributes", 
      rowNum: 20000, 
      pager: '#attributeEditPager', 
      editurl: "vendor/ajax/dummy.do", 
      data: vendor.attributes, 
      jsonReader : { repeatitems: false } 
      }); 
      $("#attributeEditList").jqGrid("navGrid", '#attributeEditPager', { 
       edit: false, 
       add: false, 
       del: true, 
       search: false, 
       refresh: false, 
       delfunc: deleteAttribute 
      } 
     ); 
      $("#attributeEditList").jqGrid("inlineNav", '#attributeEditPager'); 
  • 有没有什么办法,使严格在客户端对网格进行编辑?我希望我的用户能够进行一些编辑(添加/编辑/删除),然后发布网格中的所有更改,以及网格外部的其他一些表单更改,以原子方式返回到服务器。据我所知,editurl参数是必需的,并且实际上必须是有效的url,才能进行编辑。
  • 最后,我认为这是我遇到的最大问题,就是在使用inlineNav功能时。首先,我点击“添加(+)”按钮添加一行,添加数据,然后点击“保存”按钮。然后,如果再次单击“添加”按钮,将添加新行,但“添加”和“编辑”按钮保持活动状态,而“保存”和“取消”按钮仍处于禁用状态。

如果您对这些问题有任何建议,请告诉我。

回答

1

查看the demo来自the old answer我在这里演示了如何在jqGrid中实现本地表单编辑。你第一个问题是关于navGrid增加的“删除”。所以你可以使用这个技巧来设置processing: true,我建议在本地使用“删除”按钮。您还应该使用editurl: 'clientArray'。我在一年前发布了我的建议(见here),但本地表单编辑仍然不是jqGrid的一部分。

你说得对,inlineNav有许多情况下会出现故障,并且如果用户按其他小命令点击按钮,则会出现错误的激活或错误停用按钮。您必须使用$("#attributeEditList_ilsave").removeClass('ui-state-disabled');$("#attributeEditList_ilsave").addClass('ui-state-disabled');手动激活/停用按钮。按钮的ID将由gridid和后缀“_iladd”,“_iledit”,“_ilsave”,“_ilcancel”构造而成。我建议你在onSelectRowbeforeSelectRow中包含这样的代码,直到bug在jqGrid的主代码中不会被修复。

+0

关于最后一个问题,是否在连续编辑时触发事件?否则,我将如何知道该行是否处于编辑模式? – pconrey 2012-03-15 23:01:16

+0

另外,为了记录,下面是第二次单击“添加”按钮时发生的错误堆栈的第一部分(来自Chrome中的开发人员工具):
未捕获的TypeError:无法读取属性“name”未定义
$ .jgrid.extend.editRow.each.svr.id
e.extend.each
e.fn.e.each
$ .jgrid.extend.editRow
e.extend.each 的
e.fn.e.each
$ .jgrid.extend.editRow $ .fn.jqGrid ... – pconrey 2012-03-15 23:01:49

+0

@pconrey:您可以使用[$。 jgrid.inlineEdit](https://github.com/tonytomov/jqGrid/blob/v4.3.1/js/grid.inlinedit。js#L35-46)设置任何类似于'oneditfunc'的回调函数,这将在内联编辑开始时调用。您还可以使用[inlineNav](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#inlinenav)选项中的editParams.oneditfunc'和'addParams.addRowParams.oneditfunc'。 。您可以尝试从[github](https://github.com/tonytomov/jqGrid/)使用当前版本的jqGrid。它包含一些重要的错误修复。 – Oleg 2012-03-15 23:10:56