如何在jqgrid中以编辑形式显示只读字段或以其他方式显示来自readonly列的全文

时间:2011-08-14 11:50:34

标签: jqgrid

jqGrid colModel包含使用以下属性定义的只读多行列。 内容行长度大于列宽,文本长,因此tooltio不显示其全部内容。无法看到整个内容。

我正在寻找一种允许用户查看整个列内容的方法。 例如,如果按下编辑表单按钮,则此列内容应以编辑形式显示为readonly textarea。 但是,只读列不会以编辑形式出现。

如何让用户查看整栏内容?

colModel: [{
"name":"LoggedLongText",
"editable":false,"width":539,
"classes":"jqgrid-readonlycolumn","fixed":true,
"hidden":false,"searchoptions":{"sopt":["cn","eq","ne","lt","le","gt","ge","bw","ew","nc"]}}
}]

3 个答案:

答案 0 :(得分:31)

是设置

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

可能你需要什么?

更新: Free jqGrid支持从版本4.8开始的editable属性的更多值。 The wiki article描述了editable可以起作用,并且在使用表单编辑的情况下它还支持三个字符串值:"hidden""disabled""readonly"

答案 1 :(得分:3)

要显示只读字段,您可以尝试使用"disabled:disabled"内的editoptions

另一种选择是使用返回跨度的自定义元素类型:

colModel: [ 
      ... 
      {name:'price', ..., editable:true, edittype:'custom', editoptions:{custom_element: myelem, custom_value:myvalue} },
      ...
   ]
..
function myelem (value, options) {
  var el = document.createElement("span");
  $(el).val(value);    // be sure to escape special characters as necessary.
  return el;
}

function myvalue(elem, operation, value) {
// just reutrun null or empty string.
return "";
}

我更喜欢使用“readonly:readonly”,因为readonly选项围绕单元格值包装输入控件,输入控件仍然会获得焦点,我认为这会误导用户。在可用性方面,使用"disabled:disabled"可以使输入元素更好地接收,这稍微好一些。

使用跨度要好得多。有趣的是,jqGrid甚至会向服务器发送“unsuccessful”表单控件。

希望这会有所帮助。 - jqr

答案 2 :(得分:1)

要在EditForm上显示只读字段,您必须尝试使用​​editoptions中的{readonly: true}属性作为jqGrid列,并且可以正常工作。