簡體   English   中英

JQgrid如何根據服務器數據更改行的背景色?

[英]JQgrid how do I change background color of row based on server data?

我試圖根據SQL查詢返回的數據更改多行的背景顏色。 我使用JSON作為數據類型,並嘗試使用loadComplete遍歷網格並通過在加載網格后添加css類為行着色。 這行得通,但是我返回了1000的行,這種方法大大減慢了網格的加載速度。 用戶必須等待很長時間才能最終加載網格。

我沒有嘗試使用客戶格式化程序為行着色,因為我被告知,當觸發客戶格式化程序時,網格將仍然不可用,因此會出現錯誤嗎? 我看過有關設置超時期限的文檔,因此網格可以在DOM中用於客戶格式化程序,但這聽起來會減慢網格的加載速度,而這正是我要避免的事情。

理想情況下,我想在服務器調用(PHP)期間基於表數據為該行分配一個類,然后在客戶端加載網格時,它將根據css樣式為行着色。 似乎在服務器端分配一個類是最有效的方法,因此我不必多次遍歷數據或繪制網格不止一次? 還有哪些其他技術可以做到這一點? 謝謝!

進行所需操作的最佳方法是使用rowattr 我在答案中准確描述了您的需求。 在更舊的版本中,您將不得不像更舊的答案中所描述的那樣進行迭代,並將類設置為某些行。

最重要的是要理解,頁面上一個元素的每次更改都是在重新計算頁面上所有其他元素的位置之后進行的。 要做的最小工作是回流焊(請參閱此處 )。 在使用gridview: true jqGrid的gridview: true選項的情況下,將首先將網格主體的所有行創建為字符串,然后通過一個操作將其放置在頁面上(類似於innerHTML屬性之類)。 在不分頁使用大量行的情況下,它可以顯着提高性能。 如果使用自定義格式程序, cellattrrowattr ,則可以自定義默認的網格主體構建過程,而不會帶來任何性能劣勢。

自定義格式化程序的用法通常是正確的,但是您必須為每一列定義格式化程序的問題。 此外,如果要使用許多不同類型的列(復選框,數字,貨幣),那么自定義格式器的使用效果不好,因為您將不得不再一次實現所有格式器或從自定義格式器中調用預定義的格式器,因此不需要的代碼。

cellattr的用法更好(請參見此處此處此處 ),但是您將不得不設置所有單元格(列)的class屬性,而不僅僅是僅設置行的class屬性( <tr> )。

因此,我找到了最好的方法,就像我在回答開始時建議的那樣,使用rowattr 答案中,您將找到您真正需要的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM