2014-12-03 80 views
1

我有一個使用jqGrid構建的表。如果一個單元格爲空(gridtable1_Age),我希望另一個單元格(gridtable1_Name)中的文本爲粗體。我試圖使用loadComplete,但它似乎並沒有工作,或者如果我在正確的地方使用它。JQuery jqGrid loadComplete

jQuery("#grid1").jqGrid('setGridParam', opts).trigger("reloadGrid", [ { 
    page : 1, 
    loadComplete : function() { 
     $('td[aria-describedby=grid1_Age]:empty', 
      '#gridtable1').parent().find('td[aria- 
      describedby=grid1_Name]').css('font-weight', 'bold'); 
           } 
          } ]); 

編輯:我的網格是建立與Struts2的標籤

回答

0

我覺得grid1_Agegrid1_name需要用引號包梁在選擇這樣的:

loadComplete : function() { 
    $('td[aria-describedby="grid1_Age"]:empty', '#gridtable1').parent().find('td[aria- 
     describedby="grid1_Name"]').css('font-weight', 'bold'); 
          } 

如果grid1_Age和/或grid1_name是變量而不是文字,那麼正確的做法是:

loadComplete : function() { 
    $('td[aria-describedby="'+grid1_Age+'"]:empty', '#gridtable1').parent() 
    .find('td[aria-describedby="'+grid1_Name+'"]').css('font-weight', 'bold'); 
          } 
         } ]); 
+0

我不認爲這是必要的,但我嘗試過,但它仍然無法正常工作。代碼的$(..)部分按我測試過的方式工作,綁定到一個按鈕。它在我點擊按鈕時起作用,但我希望在網格加載數據後它會自動運行。 – Freigheist 2014-12-03 18:11:08

2

我想你有AgeName列。你可以做的是Name列,看起來像下面

cellattr: function (rowId, val, item) { 
    if (item.Age === "") { // or some very close test 
     return ' style="font-weight: bold;"'; 
    } 
} 

在網格將創建有正確的CSS樣式的情況下定義cellattr財產。在頁面上進行更改會更快(請參閱the answer,其中描述了所有修改都適用於整個頁面的額外迴流,並且如果可能的話,應該減少修改)。

順便說一句,你發佈的代碼不工作,因爲「空」單元格可能包含 符號。

+0

$(...)部分確實有效,因爲我在其他地方測試過成功。我將它綁定到一個按鈕上,點擊時可以突出顯示文本。 我不確定您的解決方案是否最好。我的網格是用Struts2標籤構建的;我不相信我可以將它應用到它。我錯了嗎? – Freigheist 2014-12-03 18:40:04

+0

@Freigheist:我自己並沒有使用Struts2,但是我發現[這裏](Custom Formatter)一個例子,說明如何在Struts2的jqGrid插件中使用自定義格式化程序。從JavaScript的角度來使用自定義formater,需要在列的聲明中包含屬性'formatter:function(cellvalue,options,rowObject){...}'。在「cellattr」的情況下,需要做幾乎相同的事情。如果我正確理解了這個例子,你只需要定義**全局**函數,比如'function MyBold(rowId,val,item){...}'來自'cellattr'的實體並使用'cellattr:「MyBold」 。 – Oleg 2014-12-03 20:24:34