[index.js]
this.priceEditParams = { params: { change: this.changeFn.bind(this) } };
}
changeFn(e) {
var rowDetils = this.grid.getRowInfo(e.event.target);
this.grid.updateCell(rowDetils.rowIndex, "Tax", e.value / 10);
this.grid.updateCell(rowDetils.rowIndex, "Total", e.value / 10 + e.value);
}
cellEdit(args) {
if (args.columnName == "Tax" || args.columnName == "Total") {
args.cancel = true; // Prevent edit action in Tax and Total columns
}
}
<GridComponent
ref={g => (this.grid = g)}
dataSource={this.customData}
pageSettings={this.pageSettings}
toolbar={this.toolbarOptions}
allowPaging={true}
editSettings={this.editSettings}
cellEdit={this.cellEdit.bind(this)}
>
<ColumnsDirective>
<ColumnDirective
field="Item"
headerText="Product"
width="120"
textAlign="Right"
isPrimaryKey={true}
/>
<ColumnDirective
field="Price"
headerText="Price"
format="C2"
editType="numericedit"
edit={this.priceEditParams}
width="150"
/>
<ColumnDirective
field="Tax"
headerText="Tax"
width="120"
format="C2"
textAlign="Right"
/>
<ColumnDirective
field="Total"
headerText="Total"
format="C2"
width="170"
/>
</ColumnsDirective>
<Inject services={[Page, Toolbar, Edit]} />
</GridComponent> |
[index.js]
changeFn(e) {
var rowDetils = this.grid.getRowInfo(e.event.target);
var grid = document.getElementsByClassName("e-grid")[0].ej2_instances[0];
if (grid.element.querySelector(".e-gridform")) {
grid.element.querySelector(".e-gridform input[name='Tax']").value =
e.value / 10;
grid.element.querySelector(".e-gridform input[name='Total']").value =
e.value / 10 + e.value;
}
}
<GridComponent
ref={g => (this.grid = g)}
dataSource={this.customData}
pageSettings={this.pageSettings}
toolbar={this.toolbarOptions}
allowPaging={true}
editSettings={this.editSettings}
>
<ColumnsDirective>
<ColumnDirective
field="Item"
headerText="Product"
width="120"
textAlign="Right"
isPrimaryKey={true}
/>
<ColumnDirective
field="Price"
headerText="Price"
format="C2"
editType="numericedit"
edit={this.priceEditParams}
width="150"
/>
<ColumnDirective
field="Tax"
headerText="Tax"
width="120"
format="C2"
textAlign="Right"
allowEditing={false}
/>
<ColumnDirective
field="Total"
headerText="Total"
format="C2"
width="170"
allowEditing={false}
/>
</ColumnsDirective>
<Inject services={[Page, Toolbar, Edit]} />
</GridComponent> |
[index.js]
this.priceEditParams = { params: { change: this.changeFn.bind(this) } };
this.editParams = {
params: {
change: e => {
if (e.isInteracted) {
var inputEle = this.grid.element.querySelector(
".e-gridform input[name='Price']"
);
if (inputEle) {
var priceEle = inputEle.previousElementSibling.ej2_instances[0];
priceEle.value = null;
}
}
}
}
};
}
changeFn(e) {
var grid = document.getElementsByClassName("e-grid")[0].ej2_instances[0];
if (grid.element.querySelector(".e-gridform") && e.isInteracted) {
var taxEle = this.grid.element.querySelector(
".e-gridform input[name='Tax']"
);
var totalEle = this.grid.element.querySelector(
".e-gridform input[name='Total']"
);
if (taxEle) {
taxEle.previousElementSibling.ej2_instances[0].value = null;
}
if (totalEle) {
totalEle.previousElementSibling.ej2_instances[0].value = null;
}
}
} |