2016-07-06 73 views
3

我有一個jqGrid。 我的功能是 -將列設置爲在JqGrid中顯示0

$("#grid").jqGrid({ 
     url: "/Log/GetLogs", 
    datatype: 'json', 
    mtype: 'Get', 
    colNames: ['LogID', 'Agency Billing Code', 'License Number', 'Equipement Number', 'Year', 'Make', 'Model', 'Color', 'Begin Miles', 'End Miles'], 
    colModel: [ 
     { key: true, hidden: true, name: 'ID', index: 'ID' }, 
          { key: false, name: 'Year', index: 'Year', editable: false }, 
     { key: false, name: 'Make', index: 'Make', editable: false }, 
     { key: false, name: 'Model', index: 'Model', editable: false }, 
     { key: false, name: 'Color', index: 'Color', editable: false }, 
       { key: false, name: 'Miles', index: 'Miles', editable: true, cellvalue: "" }, 
    ], 
     pager: jQuery('#pager'), 
    rowNum: 10, 
    rowList: [10, 20, 30, 40], 
    height: '100%', 
    viewrecords: true, 
    caption: 'Log List', 
    emptyrecords: 'No Records', 
    jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: false, 
     id: "0" 
    }, 
    autowidth: true, 
    multiselect: false 

}); 

當電網負載,數據庫正在恢復「萬里」的價值,但我不想證明。我只想顯示0,並且當我編輯里程值時,它應該映射到我的對象中的Miles。 請讓我知道我該怎麼做到這一點? 謝謝..

+0

@Oleg可以幫助你解決這個問題 – yash

+0

**你可以包含一個用來填充網格的輸入數據的例子嗎?我的意思是'url:「/ Log/GetLogs」''返回的一項數據?**您真的使用'repeatitems:false'格式的數據嗎?通常,通過在'colModel'中使用'jsonmap'屬性可以很容易地解決你的問題。如果你真的使用'repeatitems:false'格式的數據,那麼'jsonmap:function(){return 0; }列中的''將解決你的問題,但'jsonReader'的屬性'id:「0」似乎很奇怪。您使用哪種版本的jqGrid,以及jqGrid的哪個版本? – Oleg

回答

1

爲了完成你所需要的,你需要有一個格式化器和非格式化的英里列。您尚未指定如何編輯網格行(內聯,表單編輯,自定義...等),但我創建了內聯編輯作爲示例。

這是jsfiddle的完整解決方案,如果你想玩它。只需單擊該行即可進行編輯,在編輯時,英里將顯示其原始值,但在非編輯模式下顯示爲0。有關如何工作的格式見 Here

var mileformatter= function (cellval, options, rowObject) { 
    return "<span data-val='"+cellval+"'>0</span>"; 
    } 

    var mileUnFormat= function (cellvalue, options, cell) { 
      return $('span', cell).attr('data-val'); 
    } 
      "use strict"; 
      var mydata = [ 
        {ID:"1", Year: "1933", Make: "Nissan",Model:"Model1", Color: "White",Miles:1222}, 
        {ID:"2", Year: "2008", Make: "Toyota",Model:"Model2" , Color: "Gray",Miles:3000}, 
       ]; 
      $("#list").jqGrid({ 
     data: mydata, 
    datatype: "local", 
    mtype: 'Get', 
    colModel: [ 
     { key: true, hidden: true, name: 'ID', index: 'ID' }, 
     { key: false, name: 'Year', index: 'Year', editable: false }, 
     { key: false, name: 'Make', index: 'Make', editable: false }, 
     { key: false, name: 'Model', index: 'Model', editable: false }, 
     { key: false, name: 'Color', index: 'Color', editable: false }, 
     { key: false, formatter:mileformatter,unformat:mileUnFormat, name: 'Miles', index: 'Miles', editable: true, cellvalue: "" }, 
    ], 
     pager: jQuery('#pager'), 
    rowNum: 10, 
    rowList: [10, 20, 30, 40], 
    height: '100%', 
    viewrecords: true, 
    caption: 'Log List', 
    emptyrecords: 'No Records', 
    jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: false, 
     id: "0" 
    }, 
    autowidth: true, 
    multiselect: false, 
    onSelectRow: function (id) { 

      jQuery('#list').editRow(id, true); 
      } 


}); 

更多的細節這裏是你在找什麼的編輯答案和新jsfiddle鏈接與注意,我刪除了unformatter也加入beforeSaveRow功能的發揮。

var onEdit=false; 

var mileformatter= function (cellval, options, rowObject) { 
if(onEdit==true) 
{ 
return cellval; 
onEdit=false; 
} 
    return 0; 
    } 

      "use strict"; 
      var mydata = [ 
        {ID:"1", Year: "1933", Make: "Nissan",Model:"Model1", Color: "White",Miles:1222}, 
        {ID:"2", Year: "2008", Make: "Toyota",Model:"Model2" , Color: "Gray",Miles:3000}, 
       ]; 
      $("#list").jqGrid({ 
     data: mydata, 
    datatype: "local", 
    mtype: 'Get', 
    colModel: [ 
     { key: true, hidden: true, name: 'ID', index: 'ID' }, 
     { key: false, name: 'Year', index: 'Year', editable: false }, 
     { key: false, name: 'Make', index: 'Make', editable: false }, 
     { key: false, name: 'Model', index: 'Model', editable: false }, 
     { key: false, name: 'Color', index: 'Color', editable: false }, 
     { key: false, formatter:mileformatter, name: 'Miles', index: 'Miles', editable: true, cellvalue: "" }, 
    ], 
     pager: jQuery('#pager'), 
    rowNum: 10, 
    rowList: [10, 20, 30, 40], 
    height: '100%', 
    viewrecords: true, 
    caption: 'Log List', 
    emptyrecords: 'No Records', 
    jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: false, 
     id: "0" 
    }, 
    autowidth: true, 
    multiselect: false, 
    onSelectRow: function (id) { 

      jQuery('#list').editRow(id, 
      { 
       "keys": true,   
       oneditfunc: function() { 

       }, 

       "successfunc": function() { 
       alert('successfunc'); 
       }, 
       "url": null, 
       "extraparam": {}, 
       "aftersavefunc": function() { 
       alert('aftersavefunc'); 
       }, 
       "errorfunc": null, 
       "afterrestorefunc": null, 
       "restoreAfterError": true, 
       "beforeSaveRow": function (options, rowid) { 
       onEdit=true; 
       jQuery("#list").saveRow(id, false); 

        return false; 

       } 
       }); 

     } 


}); 

您可以自定義SaveRow,如下所示,並把自己的文章URL。

saveparameters = { 
     "successfunc" : null, 
     "url" : "yoururl", 
      "extraparam" : {}, 
     "aftersavefunc" : null, 
     "errorfunc": null, 
     "afterrestorefunc" : null, 
     "restoreAfterError" : true, 
     "mtype" : "POST" 
    } 

    jQuery("#grid_id").jqGrid('saveRow',rowid, saveparameters); 
+0

謝謝...這個作品。當網格加載時,但當我點擊編輯值。它顯示數據庫的值。我不想展示這一點。有沒有辦法做到這一點。當我點擊單元格時,仍然會顯示0而不是數據庫值? – Reena

+0

這是不是你說的「當我編輯里程值時,它應該映射到邁爾斯在我的對象中」?你能向我澄清一下嗎?你什麼時候想要使用數據庫值?讓它更清楚,然後我會更新我的答案。屏幕上的 –

+0

我不想要數據庫值。當用戶輸入英里數時,我將保存,它應該映射到數據庫中的Miles列。 – Reena

相關問題