jqGrid中的隐藏列

有没有什么办法可以隐藏jqGrid表中的列,但在表单编辑器模式对话框中编辑行时,它显示为只读?

我只是想扩大queen3的build议,应用下面的诀窍:

editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } } 

情景#1

  • 字段必须在网格中可见
  • 字段必须在表单中可见
  • 字段必须是只读的

解答

 colModel:[ { name:'providerUserId', index:'providerUserId', width:100,editable:true, editrules:{required:true}, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } } }, ], 

providerUserId在网格中可见并在编辑表单时可见。 但是你不能编辑内容。


情景#2

  • 字段不能在网格中可见
  • 字段必须在表单中可见
  • 字段必须是只读的

解答

 colModel:[ {name:'providerUserId', index:'providerUserId', width:100,editable:true, editrules:{ required:true, edithidden:true }, hidden:true, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } } }, ] 

注意在这两个例子中我使用jq来引用jquery,而不是通常的$。 在我的HTML中,我有以下脚本来修改jQuery使用的variables:

 <script type="text/javascript"> var jq = jQuery.noConflict(); </script> 

这个特性被内置到jqGrid中。

设置你的网格function如下。

 $('#myGrid').jqGrid({ ... colNames: ['Manager', 'Name', 'HiddenSalary'], colModel: [ { name: 'Manager', editable: true }, { name: 'Price', editable: true }, { name: 'HiddenSalary', hidden: true , editable: true, editrules: {edithidden:true} } ], ... }; 

还有其他的可以应用的editrules,但是这个基本的设置会隐藏经理的工资,但是在编辑窗体显示的时候可以编辑。

您可以使用以下代码隐藏表格列

 JQuery("tableName").hideCol("colName"); 

你可以使用下面的代码再次显示它。

 JQuery("tableName").showCol("colName"); 

对于你的问题,你可以调用document.ready()的hideCol()代码,并且可以在对话框的edit / click事件上绑定showCol()代码。

这个线程是相当老,我想,但如果其他人绊倒这个问题…我不得不从表中select的行抓取一个值,但我不想显示该行的行。 我使用了hideCol,但是和Andy看起来很混乱的问题一样。 要解决它(称之为破解)我只是重新设置网格的宽度。

 jQuery(document).ready(function() { jQuery("#ItemGrid").jqGrid({ ..., width: 700, ... }).hideCol('StoreId').setGridWidth(700) 

由于我的行宽是自动的,所以当我重新设置表的宽度时,它重置了列的宽度,但是排除了隐藏的宽度,所以他们填补了空白。

尝试使用edithidden:真正的,也做

 editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } } 

或者看jqGrid维基自定义编辑,你可以设置任何inputtypes,甚至标签我认为。

隐藏网格列

 jQuery("#validGrid").jqGrid('hideCol',str); 

这个post有点老了。 但这是我的代码来显示/隐藏列。 我使用内置函数来显示列,并将其标记。

显示列显示/隐藏列的function。 #jqGrid是我的网格的名称,而columnChooser是jqGrid列select器。

  function showHideColumns() { $('#jqGrid').jqGrid('columnChooser', { width: 250, dialog_opts: { modal: true, minWidth: 250, height: 300, show: 'blind', hide: 'explode', dividerLocation: 0.5 } });