Use filter bar template in foreign key column
17 Feb 20223 minutes to read
You can use the filter bar template in foreign key column by defining the FilterBarTemplate
property of Column
. The following example demonstrates the way to use filter bar template in foreign column.
In the following example, The Employee Name is a foreign key column. This column header shows the custom filter bar template and you can select filter value by using the DropDown options.
@{
Object filterTemplate = new Object();
filterTemplate = (new { create = "create", read = "read", write = "write" });
}
@Html.EJS().Grid("Grid").DataSource((IEnumerable<object>)ViewBag.DataSource).Columns(col =>
{
col.Field("OrderID").HeaderText("Order ID").Width("120").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("EmployeeID").HeaderText("Employee Name").Width("150").FilterBarTemplate(filterTemplate).ForeignKeyField("EmployeeID").ForeignKeyValue("FirstName").DataSource((IEnumerable<object>)ViewBag.ForeignData).Add();
col.Field("OrderDate").HeaderText("Order Date").Width("130").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Format("yMd").Add();
col.Field("Freight").HeaderText("Freight").Width("120").Format("C2").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("ShipCountry").HeaderText("Ship Country").Width("120").Add();
}).AllowFiltering().Render()
<script>
function create (args) {
return document.createElement('input', { className: 'flm-input' });
}
function write (args) {
var fEmployeeData = @Html.Raw(Json.Encode(ViewBag.ForeignData));
fEmployeeData.splice(0, 0, { 'FirstName': 'All' }); // for clear filtering
var dropInstance = new ej.dropdowns.DropDownList({
dataSource: new ej.data.DataManager(fEmployeeData),
fields: { text: 'FirstName' },
placeholder: 'Select a value',
popupHeight: '200px',
index: 0,
change: (args) => {
var grid = document.getElementById("Grid").ej2_instances[0];
if (args.value !== 'All') {
grid.filterByColumn('EmployeeID', 'equal', args.value);
}
else {
grid.clearFiltering("EmployeeID");
}
}
});
dropInstance.appendTo(args.element);
}
</script>
public IActionResult Index()
{
ViewBag.DataSource = OrderDetails.GetAllRecords();
ViewBag.ForeignData = EmployeeDetails.GetAllRecords();
return View();
}