मेरा प्रश्न मुख्य रूप से दस्तावेज़ों में this statement घूमता है w.r.t. घटक प्रतिक्रिया:एजी-ग्रिड-प्रतिक्रिया सेल एडिटर घटक में "एंटर" कुंजी प्रेस के लिए ईवेंट प्रचार को कैसे रोकें?
cellEditor पैरामीटर
OnKeyDown कॉलबैक ग्रिड बताने के लिए एक कुंजी दबाने था - उपयोगी वापस ग्रिड से नियंत्रण महत्वपूर्ण घटनाओं (टैब, तीर आदि) पारित करने के लिए - लेकिन आप करते हैं को इसे कॉल करने की आवश्यकता नहीं है क्योंकि ग्रिड पहले से ही के रूप में ईवेंट के लिए सुन रहा है। यह केवल तभी जरूरी है जब आप ईवेंट प्रचार को रोक रहे हों।
मैं समझता हूँ कि cellEditor पैरामीटर मौजूद रूप में रंगमंच की सामग्री घटक के लिए प्रतिक्रिया संस्करण के लिए पारित किया जा रहा है, लेकिन मैं डॉक्स में विनिर्दिष्ट OnKeyDown को संलग्न करने के लिए कैसे पता नहीं कर पा रहे। मेरे सेल एडिटर के लिए मेरे कन्स्ट्रक्टर में ऑनकेडडाउन फ़ंक्शन मौजूद है और onKeyDown
से मेल खाता है जो मेरी कॉलम परिभाषा (यदि यह मौजूद है) के अंदर cellEditorParams
में निर्दिष्ट है।
constructor(props) {
super(props);
// console.log(typeof props.onKeyDown == 'function') => 'true'
}
लेकिन यह तक पहुँच कभी नहीं रहा है, तो यह सिर्फ घटक
onKeyDown(event) {
console.log('not reached');
}
यह अगर मैं अपने इनपुट के चारों ओर एक शीर्ष स्तर रैपिंग div के अंदर onKeyDown={this.props.onKeyDown}
डाल लागू हो जाता है में मौजूद है लेकिन यह अभी भी पकड़ नहीं करता है "एंटर" दबाएं।
मैं वाले कक्ष को सुनने के अपने कस्टम सेल संपादक
this.props.eGridCell.addEventListener('keyup', (event) => {
console.log(event.keyCode === 13)
})
कौन सा दर्ज प्रेस पर कब्जा करता है की कोशिश की, लेकिन यह जब दर्ज दबाया जाता है अनमाउंट करने के लिए इससे पहले कि मैं क्षेत्र के अंदर अंतिम दर्ज प्रेस पर कब्जा कर सकते हैं लगता है ? मैंने व्यवहार देखा है जहां यह भी काम नहीं करता है इसलिए मैं बहुत उलझन में हूं।
मेरे पास वर्तमान में एक साधारण सेल संपादक MyCellEditor है कि मैं फोकस करने की कोशिश कर रहा हूं और केवल टैब के अलावा दबाए जाने पर अगले सेल का चयन कर रहा हूं।
this.props.api.rowRenderer.moveFocusToNextCell(rowIndex, column, false, false, true);
मेरे मुद्दा जहां से दर्ज करें "" डिफ़ॉल्ट रूप से ईवेंट प्रचार को रोकने के लिए है: मैं पहले से ही this.props.api.rowRenderer
पर rowIndex
और column
गुण मैं rowRenderer से की जरूरत को निकालने के लिए जो मैं तो का उपयोग तरह की क्षमता है दबाएँ।
नीचे मेरा सेल संपादक और उपयोग है।
import React from 'react';
import _ from 'lodash';
class MyCellEditor extends React.Component {
constructor(props) {
super(props);
this.state = {
value: props.value,
};
}
getValue() {
return this.state.value;
}
isPopup() {
return false;
}
isCancelBeforeStart() {
return false;
}
afterGuiAttached() {
const eInput = this.input;
eInput.focus();
eInput.select();
}
onKeyDown(event) {
// Never invoked!
}
onChangeListener = (e) => {
this.setState({ value: e.target.value });
}
render() {
return (
<input
ref={(c) => { this.input = c; }}
className="ag-cell-edit-input"
type="text"
value={this.state.value}
onChange={this.onChangeListener} />
);
}
}
export default MyCellEditor;
स्तंभ परिभाषा:
columnDefs = [{
headerName: 'CustomColumn',
field: 'customField',
editable: true,
cellClass: 'grid-align ag-grid-shop-order-text',
sortable: false,
cellEditorFramework: MyCellEditor,
// Do I need cellEditorParams?
cellEditorParams: {
// onKeyDown: (event) => console.log('does not output')
}
},
...
}
प्रतिक्रिया:
<AgGridReact
columnDefs={columnDefs}
rowData={this.props.rows}
enableColResize="false"
rowSelection="single"
enableSorting="false"
singleClickEdit="true"
suppressMovableColumns="true"
rowHeight="30"
// onKeyDown also does nothing here
onGridReady={this.onGridReady}
onGridResize={() => console.log('grid resized')}
onColumnResize={() => console.log('column resized')} />
6.0.1 और 7.0.0 पर परीक्षण किया गया, 6.0.1 और 7.0.0 पर काम करता है लेकिन नेविगेशन 7.0.0 में टूट गया है। मुझे लगता है कि यह असंबंधित है। मैं 6.0.1 के साथ चिपक रहा हूँ। – buddyp450