Я лично сталкивался с этим странным явлением раньше. Проблема вызвана тем, что Ext JS «скрывает» столбцы, устанавливая ширину на 0 пикселей.
Мое решение состояло в том, чтобы добавить прослушиватели событий в заголовок сетки следующим образом:
// me is the grid
me.headerCt.on({
columnhide: me.removeWordWrapOnHide,
columnshow: me.addWordWrapOnShow,
scope: me
});
Вместо того, чтобы использовать существующий класс x-grid-cell-inner
, создайте новый, например:
<style type="text/css">
td.grid-cell-wordwrap > div {
white-space: normal; /* may need !important, not sure */
}
</style>
Затем реализация этих двух функций сделала так:
removeWordWrapOnHide: function(headerCt, column){
var me = this,
wordWrapRe = /wordwrap/;
if(column.useWordWrap || wordWrapRe.test(column.tdCls)){
column.tdCls = column.tdCls.replace("grid-cell-wordwrap", "");
column.useWordWrap = true; // Flag to check on show
me.view.refresh();
}
},
addWordWrapOnShow: function(headerCt, column){
var me = this,
wordWrapRe = /wordwrap/;
if(column.useWordWrap && !wordWrapRe.test(column.tdCls)){
column.tdCls = "grid-cell-wordwrap " + column.tdCls;
me.view.refresh();
}
}
Возможно, это не самый эффективный способ, но он выполняет свою работу.
person
Eric
schedule
12.09.2012