jqGrid:如何将列添加到只读的编辑模式?

时间:2014-01-28 13:31:17

标签: jquery jqgrid

我想在编辑对话框中添加几列是只读的,以便向用户显示他们正在编辑哪一行数据。所选行只会非常模糊地突出显示,因此用户很难分辨他们正在编辑哪一行数据。有没有办法将列添加到编辑模式并将它们设为只读?

这是我尝试过但没有一个能奏效的。也许有一些Javascript-ism,我不太正确,但我无法弄明白。

是否有人能够将列添加到只读的编辑模式中?

$("#prodTable").jqGrid('navGrid', '#pager', 
  { edit: true, add: false, del: false, search: false, refresh:true },
  { //  edit
    beforeInitData : function(formid) {
      console.log("beforeInitData formid: " + formid);
      //$("#" + "serialNumber").prop('readonly',true);
      //$("#prodTable_serialNumber").prop('readonly',true);
      //$("#prodTable_serialNumber").attr('readonly',true);
      //$("#jqgh_prodTable_serialNumber").attr('readonly',true);
      //$("#jqgh_prodTable_serialNumber").prop('readonly',true);
      $("#formid").prop('readonly',true);
    }
  }

1 个答案:

答案 0 :(得分:0)

表单编辑模式不允许在编辑对话框中插入不可编辑的字段。这是因为使用内联编辑可以提供更多优势的原因之一。我喜欢使用双击开始内联编辑。如果可编辑列将“转换”为控件,如文本<input>,下拉列表,复选框等。如果用户按 Enter 或“保存”按钮(取决于内联的形式)编辑哪一个使用)编辑的行将被保存。

如果您仍然喜欢使用表单编辑,则可以至少以两种不同的方式添加有关不可编辑列的必需信息。第一种方法是添加属性

editable: true, editoptions: {disabled: "disabled"}

到不可编辑的列。在控件显示方式,但禁用。为了更好地查看表单,您可以使用另外我在the answer中描述的方法。您应该从以下

的答案中修改beforeShowForm回调
beforeShowForm: function ($form) {
    $form.find(".FormElement[disabled]")
        .addClass("ui-state-disabled")
        .closest(".DataTD")
        .prev(".CaptionTD")
        .prop("disabled", true)
        .addClass("ui-state-disabled")
}

自定义“添加/编辑”表单的另一种方法:手动添加任何所需信息。有关相应的代码示例和演示,请参阅the answerthis one