2016-09-30 60 views
-2

我可以在單元格A上使用自定義格式器來修改單元格B嗎?根據一個值的值設置多個列

+0

這個問題是合法的。我不知道你爲什麼會拒絕投票。 – zouza

+0

您是否可以包含至少2項數據並更詳細地描述您現在正在做什麼以及需要實施哪些內容?一切皆有可能,但必須瞭解更多關於您的問題的細節。你使用'datatype:「json」,loadonce:true'或'datatype:「local」'?您使用哪個版本的jqGrid(並可以使用)?您使用哪個jqGrid分支:[免費jqGrid](https://github.com/free-jqgrid/jqGrid),商業[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或舊的jqGrid版本<= 4.7。你想在網格中擁有哪些列?你寫了關於「列A」,列結果,計數,總和...... – Oleg

+0

通常你不需要循環數據。你想顯示*從服務器返回的數據部分*(通過「結果」過濾的數據)?你寫關於格式化......你需要什麼?例如,可以根據某些列的內容或輸入數據的屬性來更改某些單元格或某些行的顏色。根據來自不同屬性或不同列的信息,可以在列中構建真正的*內容*。你需要什麼。 – Oleg

回答

1

你原來的演示http://jsfiddle.net/fo3wb58w/12/顯示你想要的。一般而言,您已經使用一個格式化函數由多列共享。如果您點擊PLAMCOSUPREX列的列標題,您將看不到任何反應。問題是:您使用datatype: "local",它保存data_index參數中的網格的內部數據。在排序和過濾/搜索本地數據時將使用data。格式化只是顯示相應數據的形式。因此,我建議您先填寫每列的列數據,然後再格式化數據。它將保存data參數中的正確數據,並允許對數據進行排序和過濾。

演示的最簡單的修改將包括從包括localReader

localReader: { 
    repeatitems: true, 
    cell: function (item) { 
     var rowData = $.parseJSON(item.data); 
     rowData.data = item.data; // include the original data too 
     return rowData; 
    } 
} 

和修改您的自定義格式爲以下,例如,

function format (cellvalue) { 
    if (cellvalue !== undefined) { 
     return '<div class="led-box"><div class="' + 
      (cellvalue !== null ? 'led-green' : 'led-red') + 
      '"></div></div>'; 
    } else { 
     return ''; 
    } 
} 

http://jsfiddle.net/OlegKi/fo3wb58w/14/。現在我們將填寫數據,這允許我們在那裏排序。我在演示中使用最新版本的免費jqGrid,因爲您在原始演示中使用的jqGrid 4.6具有處理localReader(具有repeatitems: true)的錯誤。

更多深修改將是http://jsfiddle.net/OlegKi/fo3wb58w/15/

var mydata = [ 
     { data: "{\"pla\":1,\"mco\":null,\"sup\":null}" }, 
     { data: "{\"pla\":null,\"mco\":1,\"sup\":1}" }, 
     { data: "{\"pla\":1,\"rex\":null}" } 
    ], 
    sortRedGreen = function (value) { 
     switch (value) { 
      case 1: 
       return 2; 
      case null: 
       return 1; 
      default: 
       return 0; 
     } 
    }, 
    formatRedGreen = function (cellvalue) { 
     if (cellvalue !== undefined) { 
      return '<div class="led-box"><div class="' + 
       (cellvalue !== null ? 'led-green' : 'led-red') + 
       '"></div></div>'; 
     } else { 
      return ''; 
     } 
    }, 
    templateRedOrGreen = { 
     width: 48, 
     sorttype: sortRedGreen, 
     stype: "select", 
     searchoptions: { value: "undefined:Undef;null:Null;1:1", noFilterText: "Any"}, 
     formatter: formatRedGreen 
    }; 

$("#grid").jqGrid({ 
    data: mydata, 
    autoencode: true, 
    colModel: [ 
     { name: 'data', width: 250, search: false }, 
     { label: 'PLA', name: 'pla', template: templateRedOrGreen }, 
     { label: 'MCO', name: 'mco', template: templateRedOrGreen }, 
     { label: 'SUP', name: 'sup', template: templateRedOrGreen }, 
     { label: 'REX', name: 'rex', template: templateRedOrGreen } 
    ], 
    localReader: { 
     repeatitems: true, 
     cell: function (item) { 
      var rowData = $.parseJSON(item.data); 
      rowData.data = item.data; // include the original data too 
      return rowData; 
     } 
    }, 
    iconSet: "fontAwesome", 
    caption: "Stack Overflow Example" 
}).jqGrid("filterToolbar"); 

它使用自定義功能sorttype允許分選過程中重新排序的可能值undefinednull1。它使用filterToolbar

stype: "select", 
searchoptions: { value: "undefined:Undef;null:Null;1:1", noFilterText: "Any"} 

來簡化數據的過濾。

+0

感謝您的努力。在我的現實生活中,我不使用本地數據,我使用服務器端分頁,因爲我有10000000多行可能的行:)。我會接受你的答案,雖然它沒有真正回答我的問題:)我的壞,我沒有正確地問它。順便說一句,我不想​​排序這些列。謝謝你的時間,並有一個良好的週末 – zouza

+0

我不知道我們可以使用字體與jqgrid真棒:)所以謝謝你 – zouza

+0

@zouza:不客氣!你可以看看[文章](http://free-jqgrid.github.io/getting-started/index.html)和[wiki](https://github.com/free-jqgrid/ jqGrid /維基) – Oleg

相關問題