ag-grid CellEditor 单元格高度不正确
ag-grid CellEditor cell height not correct
我正在使用带有 React 16.12.0 的 ag-grid。
我有这个列定义:
const columnsAuszeichnungenn = [{
headerName: "Award",
field: "auszeichnungsname",
resizable: true,
sortingOrder: ['asc']
}, {
headerName: "From",
field: "von",
resizable: true,
editable: true,
cellEditorFramework: CellEditorOnlyNumbers,
onCellValueChanged: (params: any) => {
//Check if the user has changed the value
if (params.oldValue !== params.newValue) {
doSomething(params.newValue, "von", params.data);
}
},
cellStyle: {'white-space': 'normal'},
}];
CellEditorOnlyNumbers:
const CellEditorOnlyNumbers: React.FC<Props> = (props, ref) => {
const [error, setError] = useState<boolean>(false);
const [value, setValue] = useState<string>(props.value);
function onBlurcheckInput(e: any): void {
const value = e.currentTarget.value.trim();
/*Zuerst überprüfen wir, ob wir vlt nicht nur in das Textfeld hinein geklickt
haben und ohne etwas zu machen wieder raus gegangen sind, deshalb erste if*/
if (value !== props.value && !error) {
props.api.stopEditing();
}
}
function onchangeCheck(e: any): void {
const value = e.currentTarget.value.trim();
let isError = false;
if (value === "" || isNaN(value)) {
//Es ist keine Zahl -> Fehler
isError = true;
}
setValue(value);
setError(isError);
}
useImperativeHandle(ref, () => {
return {
getValue: () => {
if (error) {
//return initial value
return props.value;
} else {
return parseInt(value);
}
}
};
});
return (
<>
<FormControl
error={error}>
<Input
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
</FormControl>
</>
);
};
export default forwardRef(CellEditorOnlyNumbers);
我有这样的行为:
单元格的大小不正确。我想让单元格编辑器的高度与父行的高度相同。
可悲的是,我不知道从哪里开始。谁能给我一个工作示例或指出正确的方向。
//编辑
在这里找到了一个解决方案,覆盖 css:
Change cell height
像这样更改您的编辑器输入样式:
将此添加到您的 css 中,您的 css 必须是代码中的最后一个 css。
这取决于您的 ag-grid 主题,此示例使用 ag-theme-balham 主题 class,然后如果您想更改主题,则必须更改此行:
.ag-theme-balham .ag-cell-inline-editing {
height: 100%;
}
然后使用这个:
<Input
style={{position:"absolute", width: "100%", height: "100%"}}
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
或更改为:
<div style={{height: "100%", position:"absolute"}}>
<Input
style={{width: "100%", height: "100%"}}
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
</div>
示例-双击年龄字段并查看身高:DEMO
> Just sample and no real editor
我正在使用带有 React 16.12.0 的 ag-grid。
我有这个列定义:
const columnsAuszeichnungenn = [{
headerName: "Award",
field: "auszeichnungsname",
resizable: true,
sortingOrder: ['asc']
}, {
headerName: "From",
field: "von",
resizable: true,
editable: true,
cellEditorFramework: CellEditorOnlyNumbers,
onCellValueChanged: (params: any) => {
//Check if the user has changed the value
if (params.oldValue !== params.newValue) {
doSomething(params.newValue, "von", params.data);
}
},
cellStyle: {'white-space': 'normal'},
}];
CellEditorOnlyNumbers:
const CellEditorOnlyNumbers: React.FC<Props> = (props, ref) => {
const [error, setError] = useState<boolean>(false);
const [value, setValue] = useState<string>(props.value);
function onBlurcheckInput(e: any): void {
const value = e.currentTarget.value.trim();
/*Zuerst überprüfen wir, ob wir vlt nicht nur in das Textfeld hinein geklickt
haben und ohne etwas zu machen wieder raus gegangen sind, deshalb erste if*/
if (value !== props.value && !error) {
props.api.stopEditing();
}
}
function onchangeCheck(e: any): void {
const value = e.currentTarget.value.trim();
let isError = false;
if (value === "" || isNaN(value)) {
//Es ist keine Zahl -> Fehler
isError = true;
}
setValue(value);
setError(isError);
}
useImperativeHandle(ref, () => {
return {
getValue: () => {
if (error) {
//return initial value
return props.value;
} else {
return parseInt(value);
}
}
};
});
return (
<>
<FormControl
error={error}>
<Input
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
</FormControl>
</>
);
};
export default forwardRef(CellEditorOnlyNumbers);
我有这样的行为:
单元格的大小不正确。我想让单元格编辑器的高度与父行的高度相同。 可悲的是,我不知道从哪里开始。谁能给我一个工作示例或指出正确的方向。
//编辑 在这里找到了一个解决方案,覆盖 css: Change cell height
像这样更改您的编辑器输入样式:
将此添加到您的 css 中,您的 css 必须是代码中的最后一个 css。 这取决于您的 ag-grid 主题,此示例使用 ag-theme-balham 主题 class,然后如果您想更改主题,则必须更改此行:
.ag-theme-balham .ag-cell-inline-editing {
height: 100%;
}
然后使用这个:
<Input
style={{position:"absolute", width: "100%", height: "100%"}}
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
或更改为:
<div style={{height: "100%", position:"absolute"}}>
<Input
style={{width: "100%", height: "100%"}}
onBlur={onBlurcheckInput}
onChange={(e: any) => onchangeCheck(e)}
value={value}
type="number"
/>
</div>
示例-双击年龄字段并查看身高:DEMO
> Just sample and no real editor