I have a drop down list suppling a parameter to my grid to load data specifically based on the selected drop down list item. It is working on filtering data and sorting, and when the drop down list change event. Some reason the Excel Export is not working. Any information would be appreciated.
<select asp-page-handler="LoadGrid" asp-items="Model.Months" asp-for="@Model.mySetDate" value="@Model.mySetDate" onselect="this.EditLog.submit();" onchange="DoPostBack();" class="form-control" ></select>
<br />
<kendo-grid name="gvRequests" navigatable="true" auto-bind="true" on-excel-export="excelExport">
<pageable enabled="true" page-size="100"></pageable>
<sortable enabled="true" />
<filterable enabled="true" />
<columns>
<column field="LogID" width="100" hidden="true" />
<column field="SetDate" title="Set Date" width="100" template="#= kendo.toString(kendo.parseDate(SetDate, 'yyyy-MM-dd'), 'MM/dd/yyyy') #" />
<column field="Project" title="Project" width="200" />
<column field="Task" title="Task" width="200" />
<column field="Action" title="Action" width="200" />
<column field="LogHours" title="Hours" width="200" />
<column template="<input name='Edit' type='submit' value='Edit LogID:#=LogID#' />"></column>
</columns>
<datasource type="DataSourceTagHelperType.Ajax" server-operation="true">
<transport >
<read url="@Url.Content("~/ManageLog?handler=Read")" datatype="json" type="POST" data="forgeryToken" />
</transport>
</datasource>
<toolbar>
<toolbar-button name="excel" action=""></toolbar-button>
</toolbar>
<excel all-pages="true" file-name="EntryLog.xlsx" proxy-url="@Url.Content("~/ManageLog?handler=Read")" data="kendo.antiForgeryTokens()" />
</kendo-grid>
<script>
function forgeryToken() {
var select = document.getElementById("mySetDate");
var option = select.options[select.selectedIndex];
const requestVerificationToken = '@Xsrf.GetAndStoreTokens(HttpContext).RequestToken';
const beforeSend = req => req.setRequestHeader('RequestVerificationToken', requestVerificationToken);
const grid = $("#gvRequests").getKendoGrid();
grid.dataSource.transport.options.read.beforeSend = beforeSend;
//return kendo.antiForgeryTokens();
var values = {};
values["mydate"] = option.value;
return values;
//return {
// antiForgeryTokens: kendo.antiForgeryTokens(),
// mydate: option.value//$("#ServiceCompany").val()
//};
}
</script>
<script type="text/javascript">
function DoPostBack() {
var select = document.getElementById("mySetDate");
var option = select.options[select.selectedIndex];
if (option.value != "Please select") {
//$("#gvRequests").data("kendoGrid").setDataSource(dataSource);
$('#gvRequests').data('kendoGrid').dataSource.read({ mydate: option.value })
}
}
</script>