2016-10-04 67 views
0

由於某種原因,我的網格是空白的,沒有行(甚至沒有空行),沒有導航圖標和編輯圖標。我使用了一些附加功能,如自動填充字段(網格內)和字體調整腳本,以便我的腳本有點長。該頁面正在從我的函數頁面接收格式正確的響應,並且它似乎與我的jsonReader設置相匹配,但它沒有用它填充網格。下面是從頁我的JSON格式的響應:JQGrid空網格,沒有導航或編輯圖標

{"page":"1", 
"total":1, 
"records":"4", 
"rows":[{"DetailID":"1","Quantity":"2","TaskName":"Differencial With Housing","UnitPrice":"335.00","ExtendedPrice":"670.00"}, {"DetailID":"2","Quantity":"1","TaskName":"Left axel seal","UnitPrice":"15.00","ExtendedPrice":"15.00"},{"DetailID":"3","Quantity":"1","TaskName":"Upper and Lower Bearings","UnitPrice":"55.00","ExtendedPrice":"55.00"}, {"DetailID":"5","Quantity":"1","TaskName":"Fluids","UnitPrice":"45.00","ExtendedPrice":"45.00"}]} 

,這裏是我的網腳本:

<script>  
    function autocomplete_element(value, options) { 
     var $ac = $('<input type="text"/>'); 
     $ac.val(value); 
     $ac.autocomplete({source: "autocomplete.php?method=fnAutocomplete"}); 
     return $ac; 
    } 
    function autocomplete_value(elem, op, value) { 
     if (op == "set") { 
     $(elem).val(value); 
     } 
     return $(elem).val(); 
    } 
     $(document).ready(function() 
      { 
       $('#filter').jqm(); 
       var selectedRow = 0;     
       $("#list").jqGrid(
       { 
        url:'managegrid.php', 
        datatype: 'json', 
        colNames:['DetailID', 'ProjectID','Qty.','Description','Unit Price','Total Cost'], 
        colModel :[ 
         {name:'DetailID', index:'DetailID', hidden:true, editable:false}, 
         {name:'ProjectID', index:'ProjectID', width:25, hidden:true, editable:true}, 
         {name:'Quantity', index:'Quantity', editable:true, width:50, align:'right', edittype:'text', editoptions: {defaultValue:'1'}}, 
         {name:'TaskName', index:'TaskName', editable:true, width:450, align:'left', edittype: 'custom', editoptions: {'custom_element' : autocomplete_element, 'custom_value' : autocomplete_value}},       
         {name:'UnitPrice', index:'UnitPrice', editable:true, width:100, align:'right'}, 
         {name:'ExtendedPrice', index:'ExtendedPrice', editable:false, width:100, align:'right'} 
        ], 
        onSelectRow: function(id){ 
         if(DetailID && DetailID!==mkinline){ 
         jQuery('#list').saveRow(mkinline); 
         jQuery('#list').editRow(DetailID,true); 
         mkinline=DetailID; 
         } 
        }, 
        pager: $('#pager'), 
        rowNum:20, 
        rowList:[], 
        pgbuttons: false, 
        pgtext: null, 
        sortorder: "asc", 
        sortname: "DetailID", 
        viewrecords: true, 
        imgpath: '/js/jquery/css/start/images', 
        caption: 'Project Details', 
        height:'auto', 
        width:823, 
        mtype:'GET', 
        recordtext:'', 
        pgtext:'', 
        editurl:"editgrid.php", 
        toolbar:[true,"bottom"], 
        loadComplete:function(){ 
          var recorddata = $("#list").getUserData(); 
          $("#t_list").html(recorddata.MSG); 
         }, 
        jsonReader: { 
         page: "PAGE", 
         total: "TOTAL", 
         records:"RECORDS", 
         root: "ROWS", 
         userdata:"USERDATA" 
         } 
        } 
       ); 
       $("#t_list").css("color","blue"); 
       jQuery("#list").jqGrid("inlineNav",'#pager',{edit:true,editicon: "ui-icon-pencil",add:true,addicon: "ui-icon-plus",search:false}, {}, {}, 
       {url:"delgridrow.php",closeAfterDelete:true,reloadAftersubmit:false,afterSubmit:commonSubmit,caption:"Delete",msg:"Delete selected",width:"400"}) 
       .navButtonAdd('#pager',{caption:"",title:"Reload Form",buttonimg:'/js/jquery/css/start/images/refresh.gif',onClickButton:function(id) 
        { 
         resetForm();    
         $("#list").setGridParam(
          { 
           url:"managegrid.php", 
           page:1 
          } 
         ).trigger("reloadGrid"); 
        } 
       });   
      }  
     ); 
    function gridSearch() 
    { 
     var pid = $("#DetailID").val(); 
     var qty = $("#Quantity").val(); 
     var tn = $("#TaskName").val(); 
     var up = $("#UnitPrice").val(); 
     $("#list").setGridParam(
      { 
       url:"managegrid.php?ProjectID="+pid+"&Quantity="+qty+"&TaskName="+tn+"&UnitPrice="+up, 
       page:1 
      } 
      ).trigger("reloadGrid"); 
     $("#filter").jqmHide(); 
     return false 
    } 
    function commonSubmit(data,params) 
    { 
     var a = eval("(" + data.responseText + ")"); 
     $("#t_list").html(a.USERDATA.MSG); 
     resetForm(); 
     return true; 
    } function resetForm() 
    { 
     window.location.reload(false); 
    } 
</script> 

我一直在試圖週末都明白這一個出來,它的駕駛我瘋了,所以任何幫助將不勝感激。

+0

您使用哪個版本的jqGrid,從哪個版本的jqGrid([免費jqGrid](https://github.com/free-jqgrid/jqGrid),商業版[Guriddo jqGrid JS](http://guriddo.net) /?page_id = 103334)或版本<= 4.7中的舊jqGrid)。如果你使用*不是免費的jqGrid *,那麼你必須在*'inlineNav'之前調用'navGrid' *。 – Oleg

+0

不知道版本號,但構建直接來自大約2年前的jquery下載頁面。我實際上正在將基於ColdFusion的開發票應用程序轉換爲PHP。這個網格工作在CF版本,所有到jQuery和jqgrid文件夾的鏈接都被保留下來了。網格正在渲染,它只是沒有被填充數據。 (並且導航/編輯圖標不顯示) –

+0

您是否添加了代碼行「jQuery(」#list「)。jqGrid(」navGrid「,'#pager',{add:false,edit:false, del:false,search:false,refresh:false});'直接調用'inlineNav'之前就像我之前寫過的那樣? – Oleg

回答

1

你應該直接調用的inlineNav前添加的代碼

jQuery("#list").jqGrid("navGrid", '#pager', 
    {add: false, edit: false, del: false, search: false, refresh: false}); 

行。

已更新:您的代碼也有許多其他問題。例如,您應該從代碼中刪除jsonReader選項,因爲它包含錯誤的屬性值(如root: "ROWS"而不是root: "rows",這是默認值,可以刪除)。您可以考慮使用jsonReader: { id: 'DetailID' }DetailID的值用作rowid,並在編輯期間使用DetailID而不是id。我建議您在使用之前定義所有變量(例如,參見mkinlineDetailID)。

+0

Thanks Oleg。我下載了最新版本的Guriddo版本,現在我得到編輯圖標和一條消息,表示沒有記錄(儘管managegrid.php頁面仍然響應json數據) –

+0

@RaymondMeade:不客氣!你至少應該刪除'jsonReader'或者將其替換爲'jsonReader:{id:'DetailID'}':參見** UPDATED **部分我的答案。隱藏的專欄'DetailID'可以在此之後被刪除。順便說一句,Guriddo不是免費的(參見價格[here](http://guriddo.net/?page_id=103334))。另一方面[免費jqGrid](https://github.com/free-jqgrid/jqGrid),我開發的,可以完全免費使用。 – Oleg

+0

那麼你知道什麼,我刪除了jsonreader,我的網格是工作。非常感謝Oleg(現在正在修復甚至沒有得到任何響應數據的自動完成功能......哈哈) –