2017-01-14 23 views
1

我有以下jsfiddle在pivot中生成一個jqgrid。 jsfiddle code 它使用以下json數據。如何在列標題上存儲N個值?

var data = [{ 
    "id": 1, 
    "make": "toyota", 
    "model": "corolla", 
    "fuelusagecity": "17", 
    "fuelusagehwy": "12", 
    "fuelmeasure":'Litre', 
    "salesaboveavg": false, 
    "totalnumberofsales": 120000.0000, 
    "highsalestext": null, 
    "salesdate": "2010-12-01", 
    "shortsalesdate": "10-12-01", 
    "groupheaderorder":"1", 
    "childorder":"1" 
}, { 
    "id": 2, 
    "make": "toyota", 
    "model": "corolla", 
    "fuelusagecity": "10", 
    "fuelusagehwy": "14", 
    "salesaboveavg": false, 
    "fuelmeasure":'Litre', 
    "totalnumberofsales": 100000.0000, 
    "highsalestext": "HIGH", 
    "salesdate": "2010-12-15", 
    "shortsalesdate": "10-12-15", 
    "groupheaderorder":"1", 
    "childorder":"1" 
}, { 
    "id": 3, 
    "make": "toyota", 
    "model": "belta", 
    "fuelusagecity": "15", 
    "fuelusagehwy": "10", 
    "salesaboveavg": true, 
    "fuelmeasure":'Litre', 
    "totalnumberofsales": 200000.0000, 
    "highsalestext": null, 
    "salesdate": "2011-01-10", 
    "shortsalesdate": "11-01-10", 
    "groupheaderorder":"1", 
    "childorder":"2" 
}, { 
    "id": 4, 
    "make": "toyota", 
    "model": "camry", 
    "fuelusagecity": "13", 
    "fuelusagehwy": "10", 
    "fuelmeasure":'Litre', 
    "salesaboveavg": false, 
    "totalnumberofsales": 300000.0000, 
    "highsalestext": "HIGH", 
    "salesdate": "2011-04-23", 
    "shortsalesdate": "11-04-23", 
    "groupheaderorder":"1", 
    "childorder":"3" 
}, { 
    "id": 5, 
    "make": "nissan", 
    "model": "skyline", 
    "fuelusagecity": "14", 
    "fuelusagehwy": "9", 
    "fuelmeasure":'Litre', 
    "salesaboveavg": true, 
    "totalnumberofsales": 500000.0000, 
    "highsalestext": "HIGH", 
    "salesdate": "2010-09-10", 
    "shortsalesdate": "10-09-10", 
    "groupheaderorder":"2", 
    "childorder":"1" 
}, { 
    "id": 6, 
    "make": "nissan", 
    "model": "zx300", 
    "fuelusagecity": "10", 
    "fuelusagehwy": "8", 
    "fuelmeasure":'Litre', 
    "salesaboveavg": false, 
    "totalnumberofsales": 400000.0000, 
    "highsalestext": null, 
    "salesdate": "2012-01-06", 
    "shortsalesdate": "12-01-06", 
    "groupheaderorder":"2", 
    "childorder":"2" 
}]; 
在JSON數據

銷售日期有兩種格式salesdate酒店有一年四個數字和shortsalesdate有一年在兩位數。在網格動態銷售日期列中,必須以yy-mm-dd格式顯示銷售日期(因此要顯示它應使用shortsalesdate屬性)。

在小提琴代碼日期按降序排列。新的修改也必須按照降序排列日期。這次它應該使用屬性salesdate中的銷售日期進行排序,但它應該使用列標題上的屬性'shortsalesdate`顯示銷售日期。

其次,有兩個按鈕可以顯示和隱藏列。在隱藏/顯示之前,方法getYColumnName中的銷售日期有一個比較。在當前的jsfiddle代碼中,它使用salesdate屬性中的值進行比較。這應該保持原樣。

所以基本上有兩件事情: 1.銷售日期的顯示,它應該在財產shortsalesdate 2.使用值所有日期的比較和排序它必須在財產使用值salesdate

我如何實現這一目標?

側面說明: 我在想物業shortsalesdate和財產shortsalesdate一個可見值列標題一個隱藏的值存儲兩個值。所以基本上可以將兩個值存儲在列中?

感謝

回答

1

我可以建議你一些解決方法,你如何能在自由的jqGrid當前4.13.6版本實現您的要求,但我覺得你的問題的這種解決辦法應該是很容易的。

你想要做的只是自定義文本,它將顯示在列標題中。因此,我在免費jqGrid的代碼中做了一些更改(請參閱此處)並將結果發佈到GitHub。

The demo加載從GitHub最新的代碼,它使用

yDimension: [ 
    { dataName: "salesdate", sortorder: "desc", 
     label: function (options) { 
      // options has the following properties: 
      // yData, yIndex, yLevel, pivotOptions 
      var date = String(options.yData).split("-"); 
      return date[0].substr(2) + "-" + date[1] + "-" + date[2]; 
     }} 
] 

label回調使構建基於數據的列標題。我將日期除以-,將年份的前兩個符號剪下並構建新字符串。一個看到的結果像下面的圖片

enter image description here

我演示不使用shortsalesdate財產,只是使用原始salesdate

yDimension中使用多個元素的情況下也是如此。使用return "(" + options.yData + ")";():演示https://jsfiddle.net/OlegKi/e1rvyczh/3/使用

yDimension: [ 
    { dataName: "salesYear", sorttype: "integer", sortorder: "desc", 
     label: function (options) { 
      return "(" + options.yData + ")"; 
     }}, 
    { dataName: "salesdate", sortorder: "desc", 
     label: function (options) { 
      // options has the following properties: 
      // yData, yIndex, yLevel, pivotOptions 
      var date = String(options.yData).split("-"); 
      return date[0].substr(2) + "-" + date[1] + "-" + date[2]; 
     }} 
] 

與當年虛擬格式:我只是將其括在大括號。結果看起來如下

enter image description here

您從GitHub刷新免費jqGrid的來源(來自here)的很好的解釋回答

+0

感謝這一點很重要。 :) –

+0

@ Dore.Ad:不客氣! – Oleg