虽然使用hidedlg =“true”,但Struts2 jquery grid gridColumn字段显示在对话框中

 

我不希望能够编辑该字段,我不想在编辑对话框中显示它,但我想将其传递给操作。 我的理解是我应该使用editable =“true”,hidedlg =“true”,editrules =“{edithidden:false}”,如上所述。 但是在对话框中该字段仍然可见且可编辑…任何人都知道此代码有什么问题? 谢谢

我没有在的属性列表中看到hidden="true" 。 此外,您使用editrules="{edithidden:false}"而不是editrules="{edithidden:true }" 。 可能是问题所在。

换句话说,您需要具有列属性

 hidden: true, editable: true, editrules: { edithidden: true }, hidedlg: true 

在答案中描述了例如。

我想你有两个选择。 我个人通过定义自己的自定义编辑选项来处理此要求。

例如:

  ... editable: true, edittype: 'custom', editoptions: { custom_element: readOnlyTextBox, custom_value: readOnlyTextBoxValue } ... function readOnlyTextBox(value, options) { var el = document.createElement("input"); el.type = "text"; el.value = value; el.disabled = true; // "disabled"; return el; } //function readOnlyTextBox(value, options) { function readOnlyTextBoxValue(elem, operation, value) { //console.log('Elem: ' + elem + ' Operation: ' + operation + ' Passed Value: ' + value + ' Value: ' + $(elem).val()); if (operation === 'get') { return $(elem).val(); } else if (operation === 'set') { $(elem).val(value); } } //function readOnlyTextBoxValue(elem, operation, value) { 

另一个选项是定义您自己的编辑表单处理程序并传入额外的行项值:

  .... ondblClickRow: function (rowid) { EditCollectionItem(rowid, this) }, //ondblClickRow .... function EditCollectionItem (rowid, grid){ $(grid).jqGrid('editGridRow', rowid, { viewPagerButtons: false, editData: { ExtraDataKey: ExtraDataValue }, afterShowForm: function (formid) { }, //afterShowForm afterComplete: function (response) { } //afterComplete }); //$this.jqGrid('editGridRow }//function EditCollectionItem (rowid, grid){