2011-12-20 71 views
0

我已經通過所有帖子,最終得到setCell與硬編碼值,但不使用options.rowId。jqGrid自定義格式化程序集單元格不會與options.rowId

function StatusFormatter(cellvalue, options, rowObject) { 
    if (cellvalue == 'C'){ 
     jQuery("#list").setCell(options.rowId , 'SOORDLINE', '', { color: 'red' }); 
     jQuery("#list").setCell("[2.000]", 'SOORDLINE', '', { color: 'red' }); 
     jQuery("#list").setCell('[2.000]', 'SOREQDATE', '', { color: 'red' }); 
     jQuery("#list").setCell(options.rowId, 'SOPRICE', '', { color: 'red' }); 
    } 
    return cellvalue; 
    }; 

FIRST和LAST行不工作,但2硬編碼rowId工作。我檢查了option.rowId中返回的內容,它們與硬編碼值相同(根據當然行的不同,我錯過了什麼?請幫忙,我沒有看到行或值之間的區別。

EDITED-

我嘗試了答案,這似乎是我需要什麼。我嘗試了以下

 { name: 'SOORDLINE', index: 'SOORDLINE', width: 25, search: false ,celattr: function() { return ' style="color: red"'; } 
}, 

爲了aleast讓他們都紅之前,我一頭扎進了邏輯,它沒有爲我做任何事

回答

1

對不起,但你用custom formatter in 絕對錯誤的方式。自定義格式化程序的目標是提供HTML片段以填充相應列中單元格的內容。所以在之前StatusFormatter將被稱爲,id將等於options.rowId的行將被創建。此外,出於性能目的,通常使用gridview: true。在網格的全部內容(網格的整個主體)將首先作爲字符串構建並且之後將在一次操作中被放置在網格體中的情況下。它提高了性能,因爲放置任何元素後,Web瀏覽器必須重新計算頁面上所有其他元素的位置。

如果你要設置的文字顏色的SOORDLINE細胞,你應該cellattr代替:

celattr: function() { return ' style="color: red"'; } 

celattr也可以使用的形式celattr: function (rowId, cellValue, rawObject) {...},你可以測試所代表的價值的rawObject財產對於任何列,並根據單元格值返回單元格樣式。

或者,您可以枚舉loadComplete中的行,並在<tr>元素上設置樣式,而不是爲每行設置相同的樣式。以the answer爲例。

+0

注:我確實得到它的工作,你的例子只有'l'cellattr,而不是2,我通過源代碼在示例中看到了差異。 – 2011-12-20 23:57:43

+0

當分組處於ON狀態時,此解決方案似乎無效。而當你排序時,這個例子中的屬性就會消失。 – 2011-12-21 00:22:00

+0

我通過關閉loadonce來解決顏色問題我猜屬性不會在行被混洗時繼續進行,並且celattr不會被重新實現。只是一個猜測。 – 2011-12-21 01:10:57