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

时间:2010-03-03 00:45:13

标签: 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},
],

这会将它们传递给编辑表单(因为editable:true),但不幸的是,用户可以编辑它们。我想隐藏这些字段,以便用户无法编辑它们。

我该怎么做?

7 个答案:

答案 0 :(得分:7)

现在,jqGrid通过edithidden属性支持此功能:

colModel: [
    { name: 'optionValue', key: true, index: 'optionValue', width: 55, editable: true,     hidden: true, editrules: { edithidden: false } },

设置为false以在添加/编辑表单中隐藏它。

答案 1 :(得分:5)

修改

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

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}}
]

然后你就像这样定义myelemmyval

function myelem(value,options){
   return $('<input type="text" value="'+value+'" disabled="disabled"/>');
}

function myval(elem){
    return elem.val();
}

这将构建一个禁用的文本字段,并且似乎比afterShowForm更少hack-ish。

<强> ORIGINAL

如果您使用的是编辑表单控件(不是内联编辑),则看起来您必须提供afterShowForm功能(向下滚动到“事件”部分)。请参阅this question

看起来您希望列显示在视图中,但不可编辑。如果您设置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');
}

答案 2 :(得分:2)

我认为更简洁的方法是onclickSubmit事件 - 您可以添加要提交的额外字段。

var gr = jQuery("#table").jqGrid('getGridParam', 'selrow');
var row = jQuery("#table").getRowData(gr);

return { Id: row.Id };

答案 3 :(得分:0)

试试这个:

beforeShowForm: function (formid)
{
    $("#tr_name",formid).hide(); 
},

答案 4 :(得分:0)

如果要传递给编辑数据库函数的信息,您可以通过URL传递其他参数

editurl:"database_edit.asp?user_id="+user_id

不一定是更好的方式 - 只是一个不同的方式。

干杯

答案 5 :(得分:0)

试试这个:

colModel: [
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {style:'display:none;'}},
]

答案 6 :(得分:0)

如果您可以信任最终用户,只需添加editoptions属性并将禁用参数设置为已禁用,如下所示:

colModel: [
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {'disabled':'disabled'}},
]