2016-05-01 90 views
0

我正在使用jqGrid v5.0.2來實現自定義格式化程序。我在列中啓用了摘要。如果列值大於40,我希望以紅色顯示文本。我已經對我的問題實施了Oleg的解決方案。格式化工作,但它也被應用到彙總行也。例如:jqgrid自定義格式化程序正在申請摘要也

Resource Week1 
-------- ----- 
Mr.X   45 
    -Task1  25 
    -Task2  20 

1)在上面的例子中,我只希望使用值20和25的細胞是紅色(如果它們是單獨地高於40),但該分組單元45也被顯示在red.I希望分組單元格只有在高於80(40 + 40)時纔是紅色的。有關如何實現我想要的結果的任何建議?

我的代碼:

{ 
      name: "FirstWeek", 
      editable: true, 
      sortable: false, 
      formatter: function (cellvalue) { 
       var color; 
       var val = Number(cellvalue); 
       if (val > 40) { 
        color = 'red'; 
       } 
       var cellHtml = "<span style='color:" + color + "' originalValue='" + 
          val + "'>" + val + "</span>"; 
       return cellHtml; 
      }, 

      unformatter: function(cellValue, options, cellObject) { 
        return $(cellObject.html()).attr("originalValue"); 
       }, 

       summaryTpl: "<b>{0}</b>", 
       summaryType: "sum", 
       editrules: { number: true, minValue: 0, maxValue: 40 } 
      } 

2)儘管在線編輯自定義格式的單元格,我在小區(UI)越來越<span class="cellWithoutBackground" style="color:undefined;">25</span>。我也使用了unformatter功能。這似乎不起作用。幫助讚賞。

+0

我不確定我是否正確理解您的要求。你使用*數據分組*,並希望阻止應用自定義格式化程序分組彙總?順便說一下格式化程序和非格式化程序似乎都是錯誤的。 unformatter回調的名字是'unformat'而不是'unformatter','$(cellObject.html())'的用法似乎也是錯誤的。我不知道Guriddo specificas,因爲我開發了jqGrid的*替代叉*:[免費jqGrid](https://github.com/free-jqgrid/jqGrid)。 – Oleg

+0

formatter的代碼也是錯誤的,因爲如果val <= 40,'color' var保持undefined。如果我正確理解你,那麼你應該使用'cellattr'而不是自定義的格式化程序。請參閱[答案](http://stackoverflow.com/a/12180842/315935)。 – Oleg

+0

您已經正確理解了我的要求Oleg。我使用數據分組,並希望防止應用自定義格式化程序對分組摘要! –

回答

0

我建議您刪除formatterunformatter回調,並在列中使用cellattr回調。它可以像定義:

cellattr: function(rowId, val, rawObject) { 
    if (Number(val) > 40) { 
     return " style='color: red'"; 
    } 
} 

或類似

cellattr: function(rowId, val, rawObject) { 
    if (Number(val) > 40) { 
     return " class='my-text-color'"; 
    } 
} 

,你在列的特定細胞(<td>元素)設置my-text-color類。如果您使用class屬性,那麼您應該定義額外的CSS規則,如

.my-text-color { 
    color: red; 
} 
+0

格式化現在適用於單個單元格。此外,我沒有得到這個HTML問題,而內聯編輯。謝謝奧列格!你有沒有關於如何將格式應用到分組摘要的想法?就像,如果分組彙總(40 *項數),我想它顯示爲紅色。任何建議隊友? –

+0

@RanjithVj:一切都很容易在免費的jqGrid中實現,但我現在沒有關於Guriddo。例如,請參閱[演示](http://www.ok-soft-gmbh.com/jqGrid/OK/grouping2-requirejs-src.htm)。它另外使用了RequireJs,但它對你並不重要,你可以看到主代碼[here](http://www.ok-soft-gmbh.com/jqGrid/OK/my-app-src.js)。有關更多詳細信息,請參閱[問題](https://github.com/free-jqgrid/jqGrid/issues/227)。演示程序使用'groupSummaryPos:[「header」,「header」]將摘要放在分組行中,但與標準摘要一樣在頁腳中摸索。 – Oleg

+0

在例子中你已經將'summaryTpl'設置爲一個常數值(DarkRed)。我希望它是動態的。如果條件滿足,我需要紅色。我需要知道'summaryTpl'如何從'summaryType'屬性內改變。感謝您的時間 –

相關問題