代码之家  ›  专栏  ›  技术社区  ›  Fragsworth

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

  •  3
  • Fragsworth  · 技术社区  · 16 年前

    例如:

    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 回复  |  直到 16 年前
        1
  •  5
  •   Community Mohan Dere    9 年前

    好的,事实证明您可以将自定义元素定义为 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}}
    ]
    

    然后你会定义 myelem myval

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

    这将构造一个禁用的文本字段,并且看起来不像以前那么黑客 afterShowForm .

    起初的

    如果您使用的是编辑表单控件(不是内联编辑),那么看起来您必须提供 afterShowForm 功能(向下滚动至事件部分)。看见 this question

    可编辑,但不在视图中显示。如果你设定 editable:true 余雨

    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
  •  8
  •   Kinetic    12 年前

    现在,jqGrid通过edithidden属性支持这一点:

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

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

        3
  •  2
  •   Steve    15 年前

    我认为一个更干净的方法是onclickSubmit事件-您可以添加额外的字段来提交。

    var gr = jQuery("#table").jqGrid('getGridParam', 'selrow');
    var row = jQuery("#table").getRowData(gr);
    
    return { Id: row.Id };
    
        4
  •  1
  •   Mehdi Souregi    9 年前

    如果您可以信任最终用户, 残废

    colModel: [
        { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {'disabled':'disabled'}},
    ]
    
        5
  •  0
  •   marc bertaud    14 年前

    试试这个:

    beforeShowForm: function (formid)
    {
        $("#tr_name",formid).hide(); 
    },
    
        6
  •  0
  •   pphillips001    14 年前

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

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

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

    干杯

        7
  •  0
  •   Bagus Putra    10 年前

    试试这个:

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