JQGrid只读和编辑选项

时间:2012-11-09 10:55:16

标签: javascript jquery jqgrid

任何人都可以告诉我如何对一个特定列进行内联编辑false,但是当您编辑colum可编辑的特定行时,例如 -

{name:'product_image', index:'ProductId', width:25, align:'right', editable:true, edittype:'file'}

这很有效,我可以通过选择行并单击编辑按钮<然后我将看到编辑对话框,然后我可以更改所述列的值。我想在网格视图中只读取列,但是,我找到了以下内容 -

{name:'product_image', index:'ProductId', width:25, align:'right', editable:false, edittype:'file',editoptions:{readonly: false}},

然而,这只会使列只读并且在编辑模式下我无法更改值。

$("#list").jqGrid({
    url:'products.php?storeId=<?php echo $_SESSION["valid_store"]; ?>',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['Product Id','Product Description','Department','Category','Price','Sale Price','Quantity','Extended Description','Web Item','Image'],
    colModel :[ 
      {name:'ProductId', index:'ProductId', width:20}, 
      {name:'product_name', index:'product_name', width:50, editable:true, edittype:'text', search:true, stype:'text'},
      {name:'DepartmentName', index:'DepartmentName', width:40,sortable: false, editable: true, edittype: "select"},
      {name:'CategoryName', index:'CategoryName', width:40,sortable:false, editable:true, edittype:'select'}, 
      {name:'price', index:'price', width:15, align:'right', editable:true, edittype:'text'}, 
      {name:'sale_price', index:'sale_price', width:15, align:'right', editable:true, edittype:'text'}, 
      {name:'product_qty', index:'product_qty', width:10, align:'right', editable:<?php if($edit_qty == 1){echo "true";}else{echo "false";} ?>, edittype:'text'}, 
      {name:'product_description', index:'product_description', width:100, sortable:false, editable:true, edittype:'text'},
      {name:'web_item', index:'web_item', width:15,sortable:false, editable:true, edittype:'select',editoptions:{value:{1:'True',0:'False'}}}, 
      {name:'product_image', index:'ProductId', width:25, align:'right', edittype:'file', editable: false},
    ],
    loadComplete:function(){
        $("#list").setColProp('DepartmentName', { editoptions: { value: departments} });
        $("#list").setColProp('CategoryName', { editoptions: { value: categories} });
    },
    pager: '#pager',
    rowNum:40,
    rowList:[10,20,30,40,50,60,70,80,90,100],
    sortname: 'ProductId',
    sortorder: 'desc',
    viewrecords: true,
    gridview: true,
    caption: 'Products',
    autowidth: true,
    height: tableHeight,
    cellEdit: true,
    loadtext: 'Loading Products...',
    cellurl: 'edit_product.php?storeId=<?php echo $_SESSION["valid_store"]; ?>',
    editurl: 'edit_product.php?storeId=<?php echo $_SESSION["valid_store"]; ?>',
  }).navGrid('#pager',
    {
        del: false,
        add: <?php if($add_products == 1){echo "true";}else{echo "false";}?>,
        edit: true,
        search: true
    },
    {jqModal:true,closeAfterEdit: false,recreateForm:true,onInitializeForm : function(formid){
        $(formid).attr('method','POST');
        $(formid).attr('action','');
        $(formid).attr('enctype','multipart/form-data');
        },
        beforeShowForm:function(form){
            $("#product_image", form).attr("disabled", "false");
        },

由于

1 个答案:

答案 0 :(得分:1)

如果我目前了解您的问题,您可以在readonly回调内的编辑表单中设置$("#product_image")字段的beforeShowForm属性。有关相应的代码示例,请参阅the answerthis one

更新:您发布的代码可以看到您使用单元格编辑cellEdit: true)。不支持使用cell editing以及jqGrid的其他编辑模式(form editinginline editing)。

cellEdit: true的使用可能是偶然的?如果你应该删除解决问题的选项。

如果确实需要使用单元格编辑,可以在“product_image”列中添加“not-editable-cell”类。您可以在colModel中使用classes: "not-editable-cell",也可以根据需要动态制作(请参阅the demo中的the answer)。该类将仅通过单元格编辑使用,并将被表单编辑忽略。

如果您确实需要同时使用单元格编辑和表单编辑,则必须在表单开始之前致电restoreCellsaveCell(请参阅the documentation编辑(例如在beforeInitData中)。您可以在最后一次调用的beforeEditCell回调中保存方法的所有参数。

对您的代码的最后一句话:对于两个index:'ProductId'ProductId,您使用product_image似乎很奇怪。是否可能输入错误?