<EjsGrid @ref="@Grid" DataSource="@Orders" ShowColumnMenu="true" AllowFiltering="true" AllowPaging="true" Height="315">
<GridEvents DataBound="OnCreated" TValue="Order"></GridEvents>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" Filter="@(new{ type= "Excel" })" TextAlign="TextAlign.Right" Width="120"></GridColumn>
<GridColumn Field=@nameof(Order.CustomerID) HeaderText="Customer Name" Filter="@(new{ type= "Excel" })" Width="150">
<FilterTemplate>
. . . . . . . . ..
</FilterTemplate>
</GridColumn>
<GridColumn Field=@nameof(Order.OrderDate) HeaderText=" Order Date" Format="d" Filter="@(new{ type= "Excel" })" Type="ColumnType.Date" TextAlign="TextAlign.Right" Width="130"></GridColumn>
<GridColumn Field=@nameof(Order.Freight) HeaderText="Freight" Format="C2" Filter="@(new{ type= "Excel" })" TextAlign="TextAlign.Right" Width="120"></GridColumn>
</GridColumns>
</EjsGrid> |
<EjsButton OnClick="FilterRecords">Filtered Records</EjsButton>
<EjsGrid @ref="@Grid" DataSource="@Orders" ShowColumnMenu="true" AllowFiltering="true" AllowPaging="true" Height="315">
. . . . .. . . .
</EjsGrid>
@code{
EjsGrid<Order> Grid;
public async void FilterRecords()
{
var filtered = await JSRuntime.InvokeAsync<FilteredResult<Order>>("getfiltereddata", Orders, Grid.ID); // sent entire dataSource and Grid ID
}
public class FilteredResult<T>
{
[JsonProperty("result")]
public IEnumerable<T> Result { get; set; }
[JsonProperty("count")]
public int Count { get; set; }
}
[getFiltereddata]
function getfiltereddata(data,id) {
var ele = document.getElementById(id).ej2_instances[0];
return ele.getDataModule().getData({}, ele.getDataModule().generateQuery(true));
}
|
var GridID;
function renderfiltericon(id) {
GridID = id;
for (var i = 0; i < document.getElementsByClassName("e-headercell").length; i++) {
//create and bind clcikk event to filter icon
. . . . . . . . .. . .
}
function openExcelDialog(args) {
//open the filter dialog manually by finding the column field
var targetuid = sf.grids.parentsUntil(args.target, "e-headercell").querySelector(".e-headercelldiv").getAttribute("e-mappinguid");
var ele = document.getElementById(GridID).ej2_instances[0];
ele.filterModule.openMenuByField(ele.getColumnByUid(targetuid).field);
}
};
. . . . . |