2012-09-12 27 views
2

我使用的基本格式例如從jqGrid Demos時:jqGrid的基本電網例如錯誤節能新行

jQuery("#rowed1").jqGrid(
     { 
      url : 'clientArray', 
      datatype : "local", 
      colNames : [ 'Inv No', 'Date', 'Client', 'Amount', 'Tax', 
        'Total', 'Notes' ], 
      colModel : [ { 
       name : 'id', 
       index : 'id', 
       width : 55, 
       editable : true, 
       key: true 
      }, { 
       name : 'invdate', 
       index : 'invdate', 
       width : 90, 
       editable : true 
      }, { 
       name : 'name', 
       index : 'name', 
       width : 100, 
       editable : true 
      }, { 
       name : 'amount', 
       index : 'amount', 
       width : 80, 
       align : "right", 
       editable : true 
      }, { 
       name : 'tax', 
       index : 'tax', 
       width : 80, 
       align : "right", 
       editable : true 
      }, { 
       name : 'total', 
       index : 'total', 
       width : 80, 
       align : "right", 
       editable : true 
      }, { 
       name : 'note', 
       index : 'note', 
       width : 150, 
       sortable : false, 
       editable : true 
      } ], 
      rowNum : 10, 
      rowList : [ 10, 20, 30 ], 
      pager : '#prowed1', 
      sortname : 'id', 
      viewrecords : true, 
      sortorder : "desc", 
      editurl : "clientArray", 
      caption : "Basic Example" 
     }); 
jQuery("#rowed1").jqGrid('navGrid', "#prowed1", { 
    edit : false, 
    add : false, 
    del : false 
}); 

以下事件來處理編輯用戶點擊,保存和取消按鈕:

jQuery("#ed1").click(function() { 
    var id = jQuery('#rowed1').jqGrid('getGridParam','selrow'); 
    jQuery("#rowed1").jqGrid('editRow', id); 
    this.disabled = 'true'; 
    jQuery("#sved1,#cned1").attr("disabled", false); 
}); 
jQuery("#sved1").click(function() { 

    var rowid = jQuery('#rowed1').jqGrid('getGridParam','selrow'); 
    alert('id: ' + rowid); 
    jQuery("#rowed1").jqGrid('saveRow', rowid , false); 
    jQuery("#sved1,#cned1").attr("disabled", true); 
    jQuery("#ed1").attr("disabled", false); 
    jQuery("#aded1").attr("disabled", false); 

}); 
jQuery("#cned1").click(function() { 
    var id = jQuery('#rowed1').jqGrid('getGridParam','selrow'); 
    jQuery("#rowed1").jqGrid('restoreRow', id); 
    jQuery("#sved1,#cned1").attr("disabled", true); 
    jQuery("#ed1").attr("disabled", false); 
    jQuery("#aded1").attr("disabled", false); 
}); 

jQuery("#aded1").click(function() { 
    jQuery("#rowed1").jqGrid('addRow', 'new'); 
    this.disabled = 'true'; 
    jQuery("#sved1,#cned1").attr("disabled", false); 
}); 

和按鈕的HTML:

<input type="BUTTON" id="aded1" value="Add Row" /> 
<input type="BUTTON" id="ed1" value="Edit row 3" /> 
<input type="BUTTON" id="sved1" disabled='true' value="Save row 3" /> 
<input type="BUTTON" id="cned1" disabled='true' value="Cancel Save" /> 

但網格工作不正常因爲... e:

  • 保存一個新行後,它保持選中狀態,我無法選擇其他。
  • 當我取消某行的編輯時,它刪除了其他幾行。
  • 當我點擊了第二次 中添加新行按鈕,谷歌Chrome調試器控制檯顯示錯誤:遺漏的類型錯誤:未定義

無法讀取屬性「名」,我幾乎可以肯定,它有與新的行ID有關,但經過2天的嘗試,我會感謝一點幫助,在此先感謝

回答

2

您正在傳遞錯誤的參數到addRow。從jqGrid documentation for addRow

Calling convention:

jQuery("#grid_id").jqGrid('addRow',parameters); 

where parameters is a object and has the following default values:

parameters = 
{ 
    rowID : "new_row", 
    initdata : {}, 
    position :"first", 
    useDefValues : false, 
    useFormatter : false, 
    addRowParams : {extraparam:{}} 
} 

此外,你將要設置rowID等於每次一個新值。您可以顯式執行此操作,也可以將其設置爲undefined以讓jqGrid爲每個新行分配一個隨機ID。


例如:

jQuery("#aded1").click(function() { 
    var parameters = { 
      rowid : undefined, 
      initdata : {}, 
      position :"first", 
      useDefValues : false, 
      useFormatter : false, 
      addRowParams : {extraparam:{}} 
    }; 

    jQuery("#rowed1").jqGrid('addRow', parameters); 
}); 
+0

Thnks賈斯汀。仍然只是正確添加第一行,然後我嘗試添加一個新的並不保存。我嘗試使用undefined,但我不太明白在哪裏使用它,我設置了rowid:undefined,但它沒有工作。 –

+0

你能發佈你的新代碼嗎? –

+0

**要添加新行:**'的jQuery( 「#aded1」)點擊(函數(){ \t \t參數= \t \t { \t \t ROWID: 「NEW_ROW」, \t \t initdata:{} , \t \t位置: 「第一」, \t \t useDefValues:假, \t \t useFormatter:假, \t \t addRowParams:{extraparam:{}} \t \t} \t \t jQuery(「#rowed1」)。jqGrid('addRow',parameters); \t});'**對於節省:**'的jQuery( 「sved1」)點擊(函數(){ \t \t \t 變種\t ROWID = jQuery的( '#rowed1')。的jqGrid( 'getGridParam', 'selrow'); (「#rowed1」)。jqGrid('saveRow',rowid); \t \t});' –