#reactjs #ag-grid-react
#reactjs #ag-grid-реагировать
Вопрос:
Я использую AGGrid в своем коде React, и некоторые тексты заголовков столбцов слишком длинные, поэтому, когда они отображаются, я не могу прочитать весь заголовок столбца, но я вижу несколько… Есть ли способ перенести текст заголовка в следующую строку без увеличения ширины всего столбца? Я попытался использовать setHEaderHeight. это не переносит текст в следующую строку.
type Props = {
comDto:CompDTO;
}
type State = {
}
const componentCssClass = componentStyle(`
.ag-cell.fullText {
white-space: normal;
word-break: normal;
line-height: 1.4em;
padding-top: 4px;
padding-bottom: 4px;
}
`);
export class CompGrid extends React.PureComponent<Props, State> {
static compCols: Array<ColDef> = [
{headerName: 'Market', field: 'marketType.marketName', width: 250},
{headerName: 'My Role', field: 'myConfirmationRole', width: 150},
{headerName: 'CP Matching', field: 'partyMatchingRole', width: 150},
{headerName: 'BR Matching', field: 'MatchingRole', width: 150},
{headerName: 'Reg Role', field: 'usRegRole', width: 150},
{headerName: 'Create USIs on My Behalf', field: 'createUSIOnBehalf',
cellRenderer: 'renderer_complistcheckbox'},
{headerName: 'Voluntarily Report to MY Company', field: 'voluntaryReport',
cellRenderer: 'renderer_complistcheckbox'},
{headerName: 'Use VICE DCO Valuation', field: 'useDCOValuations', width: 200,
cellRenderer: 'renderer_comlistcheckbox'},
];
private static gridComponents = {
'renderer_complistcheckbox': CellRenderer_ReadOnlyCheckbox
};
render(){
const {compDto} = this.props;
return (
<div className={cx(flexAgGridContainerCss, componentCssClass)}>
<AgDataGrid
frameworkComponents={ComGrid.gridComponents}
columnDefs={CompGrid.compCols}
suppressMovableColumns
suppressCellSelection
suppressRowHoverHighlight
rowData={compDto.marketRoles}
onGridReady={CompGrid.onGridReady}
onGridSizeChanged={CompGrid.onGridSizeChanged}
onColumnResized={CompGrid.onColumnResized}
/>
</div>
);
}
private static onGridReady(params) {
const gridApi = params.api;
gridApi.setHeaderHeight(30);
gridApi.sizeColumnsToFit(); // for * size columns
}
private static onGridSizeChanged(params) {
const gridApi = params.api;
gridApi.sizeColumnsToFit(); // for * size columns
}
private static onColumnResized(params) {
const gridApi = params.api;
gridApi.resetRowHeights(); // for autoHeight...
}
}
Спасибо
Комментарии:
1. Можете ли вы показать нам свой код или ss?
2. Я отредактировал свой пост с помощью фрагмента кода
Ответ №1:
Насколько я понимаю, вы ищете autoSizeColumn()
.
.
.
let ColumnApi;
.
.
onGridReady= (gridApi, columnApi ) => {
gridApi.setHeaderHeight(30);
gridApi.sizeColumnsToFit();
ColumnApi = columnApi;
this.autoSizeColumn();
};
autoSizeColumn = () => {
let allcolumn = [];
ColumnApi.getAllColumns().forEach((column) => {
allcolumn.push(column.colId);
});
ColumnApi.autoSizeColumns(allcolumn);
}
Вы можете вызвать это autoSizeColumn ();
оттуда, где вы добавляете свои строки. Его основное изменение размера заголовка столбца для строки с максимальной шириной определяет размер заголовка вашего столбца.
Примечание: autoSizeColumn
функция не изменяет заголовки столбцов, которые не видны на странице.
Для получения дополнительной информации и документов вы можете проверить эту ссылку
Комментарии:
1. Это не решило мою проблему. Что мне нужно, так это если данные внутри ячейки слишком длинные, то вместо того, чтобы показывать их как …. они должны переноситься на следующую строку, и пользователь должен иметь возможность просматривать все содержимое строки.