我的最終目標是讓jqgrid根據數據內容自動設置列寬。作為前往那里的路徑的一部分,我需要能夠在加載數據之后設置列寬,這時我知道每列的最大寬度。但是,一旦我知道列的最大寬度,我如何在“loadComplete”事件中設置每列的寬度并使網格刷新每列的新寬度?我在網上找到的大多數帖子都是關于網格的整體寬度。我想要的是設置每個列的寬度,如果總寬度太長,則自動顯示水平滾動條。更新:在看到Oleg的精彩演示之后,我最終在dqGrid(4.5.4)中編寫了這個代碼。這是我做的:找到該功能addJSONData = function(data,t, rcnt, more, adjust) {然后找到這個功能 for (j=0;j<rowReader.length;j++) { v = $.jgrid.getAccessor(cur,rowReader[j]); rd[ts.p.colModel[j+gi+si+ni].name] = v; rowData.push(addCell(idr, v, j + gi + si + ni, i + rcnt, cur, rd)); // my addtion: stores the largest header size var newWidth = v.length * 6; if (ts.grid.headers[j].width < newWidth) { ts.grid.headers[j].width = newWidth; } }然后在此函數結束之前添加以下內容 // my addition: invoke the resizing logic for (j = 0; j < rowReader.length; j++) { ts.grid.resizing = { idx: j }; ts.grid.dragEnd(); }之后,網格將根據內容調整每列的寬度。我仍然需要幫助的一件事是如何珍貴地計算新的寬度。我目前的硬編碼計算var newWidth = v.length * 6;顯然不是很可擴展。
3 回答

郎朗坤
TA貢獻1921條經驗 獲得超9個贊
我發現“更新”有點奇怪。首先是它的新問題(原文是“如何在加載數據后調整jqGrid的列寬?”)。秒我不建議更改jqGrid的源代碼,如果真的需要它。而不是你可以使用loadComplete
或beforeProcessing
?,F在關于你的主要問題:我認為你可以將細胞內容包裝在里面<span>...</span>
。之后,您可以使用jQuery.width
計算<span>
單元格中每個文本的精確寬度(以像素為單位)。最后你可以使用setColWidth
。

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
我很清楚更改源代碼的缺陷。這只是一個概念的證明,在我看來,實現這個是一個相當簡單但非常有用的功能是多么困難。特別是簡單的HTML表本身就是這樣做的。當然,在不重新處理數據的情況下也實現了效率。
- 3 回答
- 0 關注
- 1656 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消