2015-08-17 109 views
0

關於free-jqgrid 4.9.2,它會自動處理列寬嗎?不,那麼處理這個問題的正確方法是什麼?列寬度問題? (太短或太寬)

1)VIN &年列包含太多自由空間

2)修剪包含太長以適應列的寬度(如1993年三菱3000GT 2博士VR-4渦輪增壓四驅兩廂幾條記錄)

此外,jqGrid有true/false「自動換行」設置的地方?

演示在link removed

回答

0

自動寬度調節發現遊離的jqGrid存在開始4.8版本。免費的jqGrid仍然不會自動處理所有列的寬度。我們需要在colModel中添加一些其他屬性,以便根據最長內容的寬度設置寬度,並設置一些其他選項。

您當前的代碼使用width: 190爲列'Vin'並沒有指定任何其他列的任何width屬性,因此默認值width: 150將被使用。此外,您使用jqGrid的width: 1022選項和錯誤的選項autoWidth: true(而不是autowidth: true)將被忽略。這意味着網格上div(bDiv或body div)的寬度將被設置爲1022px,用戶可以使用水平滾動條查看所有列。我想推薦您閱讀the wiki article。您可以將autoResizable: true屬性添加到某些特定列,或者使用cmTemplate: { autoResizable: true }添加所有列中的屬性。結果網格的每個單元格的內容將被包裝在<span class="ui-jqgrid-cell-wrapper">...</span>中。它允許免費jqGrid獲得列的所有單元格的內容的確切寬度,然後從這些值中計算最大值。因此,用戶可以雙擊列大小調整器(列之間)以將寬度設置爲最佳值。在寬度計算期間,jqGrid將列標題的寬度與排序圖標的寬度相加,再加上列的網格單元的寬度。可以使用autoResizing: { compact: true }選項來減少沒有可見排序圖標的列的寬度。最後一個常見選項是autoresizeOnLoad: true,我建議您使用它。它會將具有autoResizable: true屬性的列的寬度設置爲最佳值。

因此,我建議你將以下選項添加到您的網格:

cmTemplate: { autoResizable: true }, 
autoResizing: { compact: true }, 
autoresizeOnLoad: true 

之後列意志的寬度看起來好多了。

如果你喜歡換一些列的文本,如果它太長,那麼你可以使用the old answer描述CSS設置,並設置欄中的autoResizingmaxColWidth屬性(在colModel)或全局設定的autoResizing選項maxColWidth網格到列的最大寬度。更長的文本將被包裝。

+0

不錯!進行這些更改後它看起來很不錯。我沒有看到寬度:Vin欄中的190,我的不好,但現在修好了。還有兩個問題,1)我想爲列添加一些左/右填充,比如VIN,這有點太緊張,2)我注意到當我調整Make列然後做列排序時,調整後的寬度得到恢復回到原來的狀態 - 它是如何工作的?有些用戶不介意,但我不能說一些其他用戶可能不需要它。 – fletchsod

+0

@fletchsod:免費jqGrid使用規則'.ui-jqgrid tr.jqgrow> td {padding:0 2px 0 2px; }'在'ui.jqgrid.css'中填充。你可以在'ui.jqgrid.css'後加入另一個CSS規則來增加填充大小:'.ui-jqgrid tr.jqgrow> td {padding:0 4px 0 4px; ''例如。排序會更改網格當前頁面的內容,因此'loadComplete'將被觸發,'autoresizeOnLoad:true'選項會重新計算列的寬度。如果你想保持初始寬度值,你可以使用'setGridParam'在第一次加載之後修改'autoresizeOnLoad'。 – Oleg

+0

細胞填充左/右看起來不錯,我想。至於autoresizeOnLoad的setGridParam,它看起來並不好,但更糟糕。在第一次加載時,Year欄不再狹窄,Trim欄中的文字被刪除。它看起來像jqGrid可以完成加載之前autoresizeOnLoad不使用。那麼,腳本有什麼問題呢,它應該做些什麼呢?另外,當我發佈它時,stackoverflow不斷移除「@Oleg:」。奇怪的。 – fletchsod