1

我想在编辑时禁用几列,但在通过 navGrid Add 添加时将启用这些列。我正在使用以下代码:

  colModel: [
      { name: 'Menu_Key_Nm', index: 'Menu_Key_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
      { name: 'Menu_Display_Nm', index: 'Menu_Display_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
      { name: 'Category', index: 'Category', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true }, edittype: 'select', editoptions: { dataUrl: '@Url.Action("GetCategoryList", "Admin")'} },
  ]

在 navGrid 编辑选项中,我正在编写以下代码:

 //edit
 {
     beforeShowForm: function (form) {
        $("#tr_Menu_Key_Nm").attr("disabled", "true");
        $('#tr_Category').attr("disabled", "true");
      }
   url: '@Url.Action("Update")',
  closeAfterEdit: true
 },
 //Add option
 {
    beforeShowForm: function (form) {
        $("#tr_Menu_Key_Nm").attr("disabled", "false");
        $('#tr_Category').attr("disabled", "false");
      }
  }

但是我在编辑后添加时禁用了以上列。任何帮助深表感谢。提前致谢。

同时通过 navGrid 添加按钮添加

4

1 回答 1

1

首先,您应该修复代码并使用.prop("disabled", true)or.prop("disabled", false)而不是.attr("disabled", "true")and .attr("disabled", "false")。如果您使用非常旧的 jQuery 版本,则可以使用attr,但在这种情况下,值应该是.attr("disabled", "disabled")and .removeAttr("disabled")

顺便说一句,我现在开发了新版本的免费 jqGrid,您已经可以下载和使用它。我计划很快发布版本。该版本有许多新功能。wiki 文章中描述了其中一项功能。它允许您editable属性定义为函数。在函数内部,您可以测试是否options.mode === "addForm"且仅在这种情况下返回 true。如果options.mode === "editForm"您可以返回“禁用”值,它将与您在代码中所做的完全相同。

试试演示。它显示

在此处输入图像描述

在此处输入图像描述

某些列的editable属性定义为editable: editableInAddForm,其中函数editableInAddForm如下所示

editableInAddForm = function (options) {
    if (options.mode === "addForm") {
        return true;
    }
    if (options.mode === "editForm") {
        return "disabled";
    }
    return false; // don't allows editing in other editing modes
}
于 2015-02-24T13:13:43.647 回答