我希望能够在用户尝试编辑行时将字段传递到编辑表单中,但我不希望这些字段可编辑 - 我希望它们只是被隐藏,因此它们仍然会被发送到服务器.
例如:
colModel :[
{label: 'Game ID', name: 'game_id', editable:true},
{label: 'Component ID', name: 'component_id', editable:true},
{label: 'Table ID', name: 'table_id', editable:true},
],
Run Code Online (Sandbox Code Playgroud)
这会将它们传递给编辑表单(因为editable:true),但不幸的是,用户可以编辑它们.我想隐藏这些字段,以便用户无法编辑它们.
我怎样才能做到这一点?
现在通过edithidden属性在jqGrid中支持:
colModel: [
{ name: 'optionValue', key: true, index: 'optionValue', width: 55, editable: true, hidden: true, editrules: { edithidden: false } },
Run Code Online (Sandbox Code Playgroud)
设置为false以在添加/编辑表单中隐藏它.
编辑
好的,事实证明你可以将自定义元素定义为编辑类型.根据您的情况,您可以执行以下操作:
colModel :[
{label: 'Game ID', name: 'game_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval}},
{label: 'Component ID', name: 'component_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval} },
{label: 'Table ID', name: 'table_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval}}
]
Run Code Online (Sandbox Code Playgroud)
然后你定义myelem并myval喜欢这样:
function myelem(value,options){
return $('<input type="text" value="'+value+'" disabled="disabled"/>');
}
function myval(elem){
return elem.val();
}
Run Code Online (Sandbox Code Playgroud)
这将构建一个禁用的文本字段,并且看起来不那么糟糕了afterShowForm.
原版的
如果您正在使用编辑表单控件(而不是内联编辑),则看起来您必须提供afterShowForm函数(向下滚动到"事件"部分).看到这个问题.
看起来您希望列显示在视图中,但不可编辑.如果设置editable:true,则无论如何,用户都可以编辑该字段.你最不得不做的是禁用/设置表单元素为隐藏,这样用户就无法改变它的值.afterShowForm那会是这样的:
afterShowForm: function(eparams){
// change the selector appropriately
$('#jqGrid input[name=game_id]').attr('type','hidden');
// or $('#jqGrid input[name=game_id]').attr('disabled','disabled');
}
Run Code Online (Sandbox Code Playgroud)