jqGrid:编辑时禁用表单域

Arn*_*nen 17 jquery editing jqgrid

我目前正在开发一个专门用于管理自动售货机等的Web应用程序.我决定在这个项目中使用jQuery,jQuery UI和jqGrid,因此我可以轻松地提供一个高度可定制的用户界面.
不幸的是,jqGrid文档已经过时了,并没有涵盖这个伟大的插件的所有功能(因为我真的很喜欢它,即使文档相当差).

无论如何,我想有足够的背景信息.让我们谈谈:
我使用内置于jqGrid的导航栏来添加,编辑和删除网格中的项目.
我有一个像魅力一样的工作,除了一件事:一些字段可能只在添加新项目时启用(或可见),而不是在编辑模式时(它们应该被隐藏和/或禁用).

示例:
我正在工作的公司出售自动售货机塔,这些塔有几种类型(不同尺寸和东西).将新塔添加到某个位置并输入系统时,必须设置该类型.但是塔楼并没有随着时间的推移而神奇地改变,因此以后可能无法编辑此字段.

有谁知道这种行为是否可以通过改变一些初始化参数来实现?
也许这是一个未记录的编辑选项(editoptions)或表单选项(formoptions)?
或者你可能有一个简单的解决方案吗?

我很想听听你的建议/解决方案!
谢谢=)

Ole*_*leg 36

您可以通过不同方式实现您的要求.例如,在beforeShowForm事件内部,您可以隐藏或显示

jQuery("#list").jqGrid({
    colModel: [
        { name: 'Name', width: 200, editable: true },
   //...

}).jqGrid('navGrid','#pager', { edit: true, add: true, del: false},
          { // edit option
              beforeShowForm: function(form) { $('#tr_Name', form).hide(); }
          },
          { // add option
              beforeShowForm: function(form) { $('#tr_Name', form).show(); }
          });
Run Code Online (Sandbox Code Playgroud)

其中id"tr_Name"由"tr_"前缀和"Name"构成 - 来自的列的name属性colModel.

更新:在答案中,在另一个展示了如何在初始化编辑之前立即动态更改属性.

更新2:免费的jqGrid允许定义editable为回调函数或as "disabled","hidden""readonly".请参阅Wiki文章.它允许更容易地实现相同的要求.


Alz*_*Alz 8

为了使字段可编辑或不可编辑,这是我在搜索答案一段时间后编写的代码(禁用行内编辑的编辑,但允许在"添加")并且找不到我需要的答案:

colModel :[ 
    {name:'id', index:'id', editable:false, ...

    }).navGrid("#pager",{edit:false,add:true,del:false,search:false,refresh:true},
        {}, // edit
        {   
            beforeInitData: function(formid) {
                $("#list").jqGrid('setColProp','id',{editable:true});
            },
            afterShowForm: function (formid) {
                $("#list").jqGrid('setColProp','id',{editable:false});
            },
Run Code Online (Sandbox Code Playgroud)