2015-05-14 50 views
0

我有一個問題,我使用的jqGrid一些選項,更好的寫的是顯示您的圖片: jQGrid的jqGrid - 使用formatDisplayField選項

所以,當我建表體(具有AJAX調用)我正在通過一個隱藏的領域。當某些東西被分組時,我想顯示隱藏字段'未定義'的字(組標題)。

有沒有使用formatDisplayField的解決方案?

我所擁有的是一樣的東西:

groupingView : { 
        groupField : ['cpv'], 
        groupCollapse : true, 
        groupOrder: ['desc'], 
        plusicon: 'ui-icon-circle-plus', 
        minusicon: 'ui-icon-circle-minus', 
        formatDisplayField: [ 
        function (value) { // Should be cpv_parent (hidden by default but sent to jggrid when instantiate) 
console.log(value); // Contain CPV Grouped 
console.log($(this)); // Contain [table#ajaxTable.ajaxTable.ui-jqgrid-btable, context: table#ajaxTable.ajaxTable.ui-jqgrid-btable, constructor: function, init: function, selector: "", jquery: "1.7.2"…] 
         //return String(displayValue).substring(0, 5); 
        } 
        ], 
        isInTheSameGroup: function (x, y) { 
         return String(x).substring(0, 5) === String(y).substring(0, 5); 
        } 
       } 

編輯 根據需要,繼承人的樣本數據形成我使用的是什麼(從最後一次嘗試(使用用戶數據)):

{"total":1,"page":1,"totalrecords":3,"userdata":{"98513295":"98000000-3"},"rows":[{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2014-04-23 16:19:56","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"},{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2013-10-01 16:05:08","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"},{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2013-09-03 17:34:39","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"}]} 

謝謝@Oleg :)

謝謝大家提前:)

Regards, Marcelo

+0

你能否提供帶有測試數據(3行 - 一組)的重現問題的演示。對我來說,例如一個人在組上的所有行中是否具有相同的'ajaxTable_cpvParant'值都是無法理解的。我猜想將信息作爲隱藏列是錯誤的,例如,將信息分別作爲「userdata」來發佈會更好。沒有演示就很難理解這個問題。 – Oleg

+0

看看[演示](http://jsfiddle.net/OlegKi/78m7jdaz/3/)。可能它已經關閉了你需要的東西。它在分組列中使用'summaryType'作爲函數的另一種方法。它額外使用'userdata'來提供像'ajaxTable_cpvParant'這樣的額外信息,例如青春。它像你一樣通過Ajax加載數據。 'serverResponse'是來自服務器的響應。 – Oleg

+0

同樣的演示,但使用免費的jqGrid看起來像http://jsfiddle.net/OlegKi/78m7jdaz/4/ – Oleg

回答

1

由於只顯示一些抽象數字,這有點難以理解您的問題。我很瞭解你。您可以通過cpv提交分組,但您需要顯示另一個字段cpvParent,這可以根據cpv值獲得。一個只需要有一個從cpv得到cpvParent的地圖。我不建議添加任何更昂貴的隱藏列。

所以我建議你更改數據

{ 
    "total": 1, 
    "page": 1, 
    "totalrecords": 3, 
    "rows": [ 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2014-04-23 16:19:56", 
      "valor": 15000, 
      "cpv": 98513295, 
      "cpvParent": "98000000-3" 
     }, 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2013-10-01 16:05:08", 
      "valor": 15000, 
      "cpv": 98513295, 
      "cpvParent": "98000000-3" 
     }, 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2013-09-03 17:34:39", 
      "valor": 15000, 
      "cpv": 98513295, 
      "cpvParent": "98000000-3" 
     } 
    ] 
} 

以下幾點:

{ 
    "total": 1, 
    "page": 1, 
    "totalrecords": 3, 
    "userdata": { 
     "98513295": "98000000-3", 
     "97123456": "97000000-2" 
    } 
    "rows": [ 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2014-04-23 16:19:56", 
      "valor": 15000, 
      "cpv": 97123456, 
      "cpvParent": "98000000-3" 
     }, 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2013-10-01 16:05:08", 
      "valor": 15000, 
      "cpv": 98513295 
     }, 
     { 
      "tipoConcurso": "Ajuste Directo (Regime Geral)", 
      "createdOn": "2013-09-03 17:34:39", 
      "valor": 15000, 
      "cpv": 98513295 
     } 
    ] 
} 

裏面formatDisplayField回調,你可以得到userData參數(參數的名稱爲userData,但JSON在其他情況下數據必須有userdata)。現在userData[value]將讓你"98000000-3"的關鍵"98513295"

groupingView: { 
    groupField: ["cpv"], 
    ... 
    formatDisplayField: [ 
     function (value) { 
      var userData = $(this).jqGrid("getGridParam", "userData"); 
      return userData[value]; 
     } 
    ] 
} 

這樣的方式將迅速工作,你只需要準備在服務器端在上述格式的數據。

+0

嗨@Oleg,早上好!你不明白我的例子,我會立即嘗試。但如果你看到,在我最後一次嘗試中,我已經有了正確的數據檢索表格服務器:) 已經嘗試過了,是的,它的工作,現在我明白,必須更好地如何工作:) 非常感謝你的幫助: ) – lmarcelocc

+1

@lmarcelocc:不客氣!如果問題解決了,您可以接受答案。 – Oleg