Show server side error on toolbarclick action

Hi all,

I'm trying to catch server side error on toolbarclick action but I don't know which property I should use.

This is my code:

@{
    Layout = LayoutPaths.Profile;
    PageInfo.Title = Sana.SimpleText("AltExcelImport_Header", "Excel Import");
}
@Html.EJS().Grid("Grid").AllowExcelExport().ToolbarClick("toolbarClick").AllowPaging().Toolbar(new List<string>
    () { "ExcelExport" }).DataBound("dataBound").Render()


    @Html.EJS().Uploader("UploadFiles").AutoUpload(true).Multiple(false).AsyncSettings(new Syncfusion.EJ2.Inputs.UploaderAsyncSettings { SaveUrl = @Url.Action("ExcelUpload", "Orders") }).Success("success").Render()




<script>
var Sana = Sana || {};
function success(args) {
    var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
    var griddata = JSON.parse(args.e.target.responseText);
    grid.dataSource = griddata;
}
function error(args) {
    var errorMessage = args.error[0].error.responseText.split("Exception:")[1].split('<br>')[0]; //extract the message from args
    alert(errorMessage);
}
function toolbarClick(args) {
    var gridObj = document.getElementById("Grid").ej2_instances[0];
    if (args.item.id === 'Grid_excelexport') {
        gridObj.serverExcelExport("@Url.Action("ExcelExport", "Orders")");
    }
}
function dataBound(args) {
    this.autoFitColumns();
}
function failure(args) {
    var errorMessage = args.error[0].error.responseText.split("Exception:")[1].split('<br>')[0]; //extract the message from args
    alert(errorMessage);
}
</script>

And here is my controller method 

        [HttpPost]
        public ActionResult ExcelExport(string gridModel)
        {
            using (ExcelEngine excelEngine = new ExcelEngine())
            {
                IApplication application = excelEngine.Excel;
                application.DefaultVersion = ExcelVersion.Excel2013;
                IWorkbook workbook = application.Workbooks.Create(1);
                IWorksheet worksheet = workbook.Worksheets[0];


                worksheet.ImportDataTable(order, true, 1, 1, true);
                //workbook.SaveAs("Excel.xlsx", HttpContext.ApplicationInstance.Response, ExcelDownloadType.Open);
                MemoryStream excelOrder = new MemoryStream();
                workbook.SaveAs(excelOrder);
                try
                {
                    CommerceFramework.Orders.SendExcelOrderToErp(excelOrder);
                }catch(Exception ex)
                {
                    throw new Exception(ex.Message); //Add custom exception message
                }


                return View();
            }
        }

Any help on this wolud be appreciated

Thank Y


1 Reply

RR Rajapandi Ravi Syncfusion Team March 2, 2022 02:18 PM UTC

Hi Lorenzo, 

Greetings from Syncfusion support 

We understand that you like to catch an event at client side, whenever you are facing error a server-side. To achieve your requirement, we suggest you use actionFailure event of Grid. This event was triggers when any Grid action failed to achieve the desired results.  

Please refer the below code example and API for more information. 

 
@Html.EJS().Grid("Grid").AllowExcelExport().ActionFailure("failure").ToolbarClick("toolbarClick").AllowPaging().Toolbar(new List<string>
    () { "ExcelExport" }).DataBound("dataBound").Render() 
 
<script>
function failure(args) { //actionFailure event of Grid 
  Console.log(args)
}
</script> 
 


Regards, 
Rajapandi R 


Loader.
Up arrow icon