失敗,我填充新的網格從JSON 自定義格式 格式定義:jqGrid的自定義格式上addClass
testFormatter(value,el,opts)
{
if (value==0)
{
$(el).addClass("Fail");
}
…
}
我期待的細胞使用的CSS類 但如果我檢查細胞他們不會添加該類。
失敗,我填充新的網格從JSON 自定義格式 格式定義:jqGrid的自定義格式上addClass
testFormatter(value,el,opts)
{
if (value==0)
{
$(el).addClass("Fail");
}
…
}
我期待的細胞使用的CSS類 但如果我檢查細胞他們不會添加該類。
您發現了custom formatter的使用情況的典型錯誤。理解jqGrid具有最佳性能是很重要的,如果網格包含將被創建爲字符串。在gridview:true
給你的表現。任何custom formatter應在gridview:true
模式下工作,所以定製格式化器沒有參數這是DOM元素,所以你不能使用操作,如$(el).addClass("Fail");
在一些老的回答(見here和here),你可以找到如何問題可以解決,但我會建議使用jqGrid 4.0.0的新功能:cellattr
選項。對於undefrstanding:自定義格式化程序的目的不是像class一樣添加一些HTML屬性。它應該用於例如將某些通用日期格式(如yyyy-mm-dd)轉換爲dd.mm.yyyy(德國風格)等本地化格式。如果你不想改變列的格式,但只想添加一些屬性像title
(用於工具提示),class
(如你的情況),style
等等新的cellattr
選項是你所需要的。
在你情況下,你可以定義
cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
if (cellValue==0) {
return ' class="Fail"';
}
}
看到一個小的演示here:
在我加入calsses ui-state-error
和ui-state-error-text
到'Client'
列的所有單元格,其中在演示'Closed'
複選框已設置。
感謝您的回答,看來我無法在jqgrid站點找到'cellattr'的文檔,只是他們添加了它。 – shevski 2011-05-18 19:03:47
@shevski:有許多有趣的新選項尚未在文檔中描述。例如,列模板是在jqGrid 3.8.2中引入的,但仍未在文檔中描述(請參見[這裏](http://stackoverflow.com/questions/6044047/stopping-columns-resizable-in-jqgrid/6047856# 6047856))。如果你在trirand論壇搜索'cellattr',你會發現一些信息。 – Oleg 2011-05-18 19:17:47