jqGrid - 如何在编辑表单中隐藏字段

Fra*_*rth 3 jquery jqgrid

我希望能够在用户尝试编辑行时将字段传递到编辑表单中,但我不希望这些字段可编辑 - 我希望它们只是被隐藏,因此它们仍然会被发送到服务器.

例如:

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),但不幸的是,用户可以编辑它们.我想隐藏这些字段,以便用户无法编辑它们.

我怎样才能做到这一点?

Kin*_*tic 7

现在通过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以在添加/编辑表单中隐藏它.


cmp*_*ken 5

编辑

好的,事实证明你可以将自定义元素定义为编辑类型.根据您的情况,您可以执行以下操作:

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)

然后你定义myelemmyval喜欢这样:

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)