Hi,
I am trying to figure out how to use the RemoteSaveAdaptor with Batch editing.
My datagrid looks like this:
<div>
<ejs-grid id="GridWater"
toolbar="@(new List<object> {"PdfExport", "ExcelExport", "Add", "Delete", "Update", "Cancel", "Search", "ColumnChooser"})"
allowPaging="true"
allowFiltering="true"
allowExcelExport="true"
allowPdfExport="true"
allowSorting="true"
allowSelection="true"
allowTextWrap="true"
showColumnChooser="true">
<e-grid-filterSettings type="Excel" />
<e-grid-editSettings allowAdding="@Model.CanEdit" allowDeleting="@Model.CanEdit" allowEditing="@Model.CanEdit" mode="Batch" showDeleteConfirmDialog="true" />
<e-data-manager json="@ViewBag.DataSourceWater" adaptor="RemoteSaveAdaptor" batchUrl="/ObjectiveDataEntry/PotableWaterBatchAddUpdate?objectiveId=@Model.Objective.ObjectiveId"></e-data-manager>
<e-grid-columns>
<e-grid-column field="ObjectiveId" headerText="ObjectiveId" allowEditing="false" defaultValue="@Model.Objective.ObjectiveId" visible="false" showInColumnChooser="false"></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="CombinedConsumption" headerText="Combined" format="N2" allowEditing="false"></e-grid-column>
</e-grid-columns>
</ejs-grid>
</div>
It batch updates everything perfectly. But when I return a JSON of the new datasource, it doesn't seem to work. The table reverts back to what existed before the edits/additions of rows.
This is the controller code -- I am returning a json based on the documentation I've read, (seems like this got too long or something so I left out the Added portion):
public IActionResult PotableWaterBatchAddUpdate([FromBody]CRUDModel<PotableWaterGridItem> addUpdateDeletes, int objectiveId)
{
if (addUpdateDeletes.Deleted != null)
{
foreach (var deleted in addUpdateDeletes.Deleted)
{
var nmPotableWater = deleted.NmPotableWater;
nmPotableWater.IsActive = false;
var caPotableWater = deleted.CaPotableWater;
caPotableWater.IsActive = false;
var nvPotableWater = deleted.NvPotableWater;
nvPotableWater.IsActive = false;
var haakPotableWater = deleted.HaAkPotableWater;
haakPotableWater.IsActive = false;
_potableWaterService.AddOrUpdatePotableWater(nmPotableWater);
_potableWaterService.AddOrUpdatePotableWater(caPotableWater);
_potableWaterService.AddOrUpdatePotableWater(nvPotableWater);
_potableWaterService.AddOrUpdatePotableWater(haakPotableWater);
var statusUpdate = _statusUpdateService.GetStatusUpdateByObjectiveFiscalYearAndReportingPeriod(deleted.ObjectiveId, deleted.FiscalYearId, deleted.ReportingPeriodId);
if (statusUpdate != null)
{
statusUpdate.IsActive = false;
_statusUpdateService.UpdateStatusUpdate(statusUpdate);
}
}
}
if (addUpdateDeletes.Changed != null)
{
foreach (var changed in addUpdateDeletes.Changed)
{
var fiscalYear = _fiscalYearService.GetFiscalYearByDescription(changed.FiscalYear.Description);
var reportingPeriodId = _reportingPeriodService.GetReportingPeriodByDescription(changed.ReportingPeriod.Description);
changed.FiscalYearId = fiscalYear.FiscalYearId;
changed.ReportingPeriodId = reportingPeriodId.ReportingPeriodId;
var nmPotableWater = changed.NmPotableWater;
nmPotableWater.FiscalYearId = fiscalYear.FiscalYearId;
nmPotableWater.ReportingPeriodId = reportingPeriodId.ReportingPeriodId;
var caPotableWater = changed.CaPotableWater;
caPotableWater.FiscalYearId = fiscalYear.FiscalYearId;
caPotableWater.ReportingPeriodId = reportingPeriodId.ReportingPeriodId;
var nvPotableWater = changed.NvPotableWater;
nvPotableWater.FiscalYearId = fiscalYear.FiscalYearId;
nvPotableWater.ReportingPeriodId = reportingPeriodId.ReportingPeriodId;
var haakPotableWater = changed.HaAkPotableWater;
haakPotableWater.FiscalYearId = fiscalYear.FiscalYearId;
haakPotableWater.ReportingPeriodId = reportingPeriodId.ReportingPeriodId;
_potableWaterService.AddOrUpdatePotableWater(nmPotableWater);
_potableWaterService.AddOrUpdatePotableWater(caPotableWater);
_potableWaterService.AddOrUpdatePotableWater(nvPotableWater);
_potableWaterService.AddOrUpdatePotableWater(haakPotableWater);
PotableWaterAddOrUpdateStatus(changed);
}
}
var data = _potableWaterService.GetPotableWaterGridItems(objectiveId).ToList();
return Json(data);
}
The grid is accurate as soon as I refresh the page. So I know the data is getting there accurately. But I do not want to have to refresh the page to show the updated data.
Thanks!