Awesome, thanks.
I created a parameter with the grid's query function in order to pass a different variable to the server based on the button that was clicked. It works. Is that a good way to do it or should I be doing something else?
Grid:
<ejs-grid id="GridWater"
actionBegin="actionBegin"
actionComplete="actionComplete"
allowPaging="true"
allowFiltering="true"
allowExcelExport="true"
allowPdfExport="true"
allowSorting="true"
allowSelection="true"
allowTextWrap="true"
created="created"
query="new ej.data.Query().addParams('submitStatus', false)" showColumnChooser="true"
toolbar="@(new List<object> {"Add", "Delete", "PdfExport", "ExcelExport", "Search", "ColumnChooser"})">
<e-grid-filterSettings type="Excel" />
<e-grid-editSettings allowAdding="@Model.CanEdit" allowDeleting="@Model.CanEdit" allowEditing="@Model.CanEdit" mode="Dialog" showDeleteConfirmDialog="@Model.CanEdit"/>
<e-data-manager json="ViewBag.DataSourceWater" adaptor="RemoteSaveAdaptor" crudUrl="/ObjectiveDataEntry/
[email protected]"></e-data-manager>
<e-grid-columns>
<e-grid-column field="GridId" headerText="GridId" isPrimaryKey="true" allowEditing="false" visible="false"></e-grid-column>
<e-grid-column field="ObjectiveId" headerText="ObjectiveId" allowEditing="false" visible="false" defaultValue="@Model.Objective.ObjectiveId"></e-grid-column>
<e-grid-column field="FiscalYear.Description" headerText="FY" editType="dropdownedit" defaultValue="@currentFiscalYear" edit="new {@params = fiscalYearDropDownList }"></e-grid-column>
<e-grid-column field="ReportingPeriod.Description" headerText="Quarter" editType="dropdownedit" defaultValue="@currentReportingPeriod" edit="new {@params = reportingPeriodDropDownList }"></e-grid-column>
<e-grid-column field="NmPotableWater.Consumption" headerText="NM" format="N2" editType="numericedit"></e-grid-column>
<e-grid-column field="CaPotableWater.Consumption" headerText="CA" format="N2" editType="numericedit"></e-grid-column>
<e-grid-column field="NvPotableWater.Consumption" headerText="NV" format="N2" editType="numericedit"></e-grid-column>
<e-grid-column field="HaAkPotableWater.Consumption" headerText="HA/AK" format="N2" editType="numericedit"></e-grid-column>
<e-grid-column field="Combined" headerText="Combined" format="N2" template="#sum" allowEditing="false"></e-grid-column>
</e-grid-columns>
</ejs-grid>
Javascript:
function actionComplete(args) {
if (args.requestType === 'beginEdit' || args.requestType === 'add') {
var grid = this;
var dialog = args.dialog;
dialog.header = args.requestType === 'beginEdit' ? 'Data for ' + args.rowData['FiscalYear']['Description'] + ' ' + args.rowData['ReportingPeriod']['Description'] : 'New Data Entry';
var button = {
'click': () => {
grid.query.params.filter((e) => e.key == 'submitStatus')[0].value = true; grid.endEdit(); },
buttonModel: {
content: 'Save & Submit Status',
id: 'SaveAndSubmitStatusButton',
cssClass: 'btn-outline-primary !important'
}
};
args.dialog.buttons.unshift(button);
args.dialog.refresh();
args.dialog.element.style.width = "40%";
args.dialog.getButtons()[0].element.title = "This will automatically create a Status Update for this data based on predefined metrics and send a notification to the EMS POC team to review the data. If all the data has not been entered yet, use Save instead and come back to submit the status later.";
args.dialog.getButtons()[0].element.id = "SaveAndSubmitStatusButton";
$("#SaveAndSubmitStatusButton").attr("data-toggle", "tooltip");
$("#SaveAndSubmitStatusButton").attr("data-placement", "top");
$("#SaveAndSubmitStatusButton").tooltip();
}
if (args.requestType === 'save' || args.requestType === 'cancel') {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0]; grid.query.params.filter((e) => e.key == 'submitStatus')[0].value = false; for (const column of grid.columns) {
if ((column).allowEditing === false && (column).field !== undefined && (column).field !== "GridId" && (column).field !== "ObjectiveId") {
(column).visible = true;
}
else if ((column).field === undefined && (column).columns !== undefined) {
for (const subColumn of (column).columns) {
var headerTextSplit = (subColumn.headerText).split(": ");
subColumn.headerText = headerTextSplit[1];
if ((subColumn).allowEditing === false) {
(subColumn).visible = true;
}
}
}
}
grid.refresh();
}
}