<ejs-grid id="Grid" allowFiltering="true" height="500" actionBegin="begin" dataBound="bound" load="load" toolbar="@(new List<string>() { "Add", "Edit", "Delete", "Update", "Cancel" })" allowPaging="true">
<e-grid-editSettings allowAdding="true" showDeleteConfirmDialog="true" allowDeleting="true" allowEditing="true" mode="Normal"></e-grid-editSettings>
<e-grid-pagesettings pageSize="8"></e-grid-pagesettings>
<e-grid-filterSettings type="Menu"></e-grid-filterSettings>
<e-grid-columns>
. . . . . . .
</e-grid-columns>
</ejs-grid>
<script>
function load () {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
grid.dataSource = new ej.data.DataManager({
adaptor: new ej.data.ODataV4Adaptor
});
}
function begin(args) { //actionBegin event
if (args.requestType === "filtering" && args.currentFilteringColumn === "OrderDate") {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
var daterange = document.getElementsByClassName('e-daterangepicker')[0].ej2_instances[0];
// End date value is added as additional filter value with ‘lessthan’ filter operator
args.columns.push({
actualFilterValue: {},
actualOperator: {},
field: "OrderDate",
ignoreAccent: false,
isForeignKey: false,
matchCase: false,
operator: "lessthan",
predicate: "and",
uid: grid.getColumnByField(args.currentFilteringColumn).uid,
value: daterange.value[1]
});
}
}
function bound() {
this.columns[3].filter.ui = {
create: (args) => {
elem = document.createElement('input');
args.target.appendChild(elem);
var isFiltered = args.target.classList.contains("e-filtered");
//var daterange = document.getElementsByClassName('e-daterangepicker')[0].ej2_instances[0];
dateTimePickerObj = new ej.calendars.DateRangePicker({
floatLabelType: 'Never',
change: function (args) {
if (args.value) {
var datevalue = args.value;
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
grid.filterByColumn("OrderDate", "greaterthanorequal", datevalue[0]);
}
}
});
dateTimePickerObj.appendTo(elem);
}
}
}
</script>
|
function createFilterDateRangePicker(args) { var element = document.createElement('input'); element.id = args.column.field; return element; } function readFilterDateRangePicker(args) { return this.filterSettings.columns.filter(col => col.field == this.column.field).map(col => col.value); } function writeFilterDateRangePicker(args) { var datePicker = new ej.calendars.DateRangePicker({ startDate: this.parent.filterSettings.columns.filter(col => col.field == args.column.field && col.operator == 'greaterthanorequal').map(col => col.value) ?? null, endDate: this.parent.filterSettings.columns.filter(col => col.field == args.column.field && col.operator == 'lessthan').map(col => col.value) ?? null, focus: function () { this.show(); }, change: function (args) { let grid = this.element.closest(".e-grid").ej2_instances[0]; if (args.value) { let predicate = grid.filterSettings.columns.filter(function (obj) { return obj.field !== args.element.id; }); predicate.push( { actualFilterValue: {}, actualOperator: {}, field: args.element.id, ignoreAccent: false, isForeignKey: false, matchCase: false, operator: "greaterthanorequal", predicate: "and", uid: grid.getColumnByField(args.element.id).uid, value: args.value[0] }, { actualFilterValue: {}, actualOperator: {}, field: args.element.id, ignoreAccent: false, isForeignKey: false, matchCase: false, operator: "lessthan", predicate: "and", uid: grid.getColumnByField(args.element.id).uid, value: args.value[1] } ); grid.filterSettings.columns = predicate; } else grid.removeFilteredColsByField(args.element.id); }, cleared: function (args) { let grid = this.element.closest(".e-grid").ej2_instances[0]; grid.removeFilteredColsByField(this.element.id); } }); datePicker.appendTo(args.element); } |
Core: filterBarTemplate=@(new { create = "createFilterDateRangePicker", read = "readFilterDateRangePicker", write = "writeFilterDateRangePicker" }) MVC: .FilterBarTemplate(new { create = "createFilterDateRangePicker", read = "readFilterDateRangePicker", write = "writeFilterDateRangePicker" }) |
Hi Emiliano,
We are happy to hear that you have founded the solution at your end.
Please get back to us if you need further assistance.
Regards,Rajapandi R
<ejs-grid id="Grid" allowPaging="true" load="onLoad" actionBegin="begin" allowFiltering="true" toolbar="@(new List<string>() {"Add", "Edit", "Update", "Delete" })">
<e-data-manager url="/Home/UrlDataSource" adaptor="UrlAdaptor" insertUrl="/Home/Insert" updateUrl="/Home/Update" removeUrl="/Home/Remove"></e-data-manager>
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Normal"></e-grid-editSettings>
<e-grid-columns>
. . . . . . . .
<e-grid-column field="OrderDate" filterBarTemplate="filterBarTemplate" headerText="Order Date" format="yMd" type="date" width="170"></e-grid-column>
. . . . . . . .
</e-grid-columns>
</ejs-grid>
<script>
var secval;
var flag = true;
function onLoad() {
this.dataSource.dataSource.headers = [{ 'XSRF-TOKEN': $("input:hidden[name='__RequestVerificationToken']").val() }];
}
function createFilterDateRangePicker(args) {
var element = document.createElement('input');
element.id = args.column.field;
return element;
}
function begin(args) { //push the 2nd date value in to the columns
if (args.requestType === "filtering" && args.currentFilteringColumn === "OrderDate") {
if (args.columns[0]) {
args.columns[0].properties.operator = "greaterthanorequal"; //maintain the 1st date column operator value as “greaterthanorequal”
}
args.columns.push({
actualFilterValue: {},
actualOperator: {},
field: "OrderDate",
ignoreAccent: false,
isForeignKey: false,
matchCase: false,
operator: "lessthan",
predicate: "and",
uid: this.getColumnByField(
args.currentFilteringColumn
).uid,
value: secval
});
}
}
function readFilterDateRangePicker(args) {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
return args.querySelector('input').ej2_instances[0].value[0].toLocaleDateString();//return the 1st date value as string format
}
function writeFilterDateRangePicker(args) {
var datePicker = new ej.calendars.DateRangePicker({
change: function (args) {
let grid = this.element.closest(".e-grid").ej2_instances[0];
if (args.value) {
secval = args.value[1];
grid.filterByColumn("OrderDate", "greaterthanorequal",args.value[0]); //filter the 1st date value
}
else
grid.removeFilteredColsByField(args.element.id);
},
cleared: function (args) {
let grid = this.element.closest(".e-grid").ej2_instances[0];
grid.removeFilteredColsByField(this.element.id);
}
});
datePicker.appendTo(args.element);
};
</script>
|
<ejs-grid id="Grid" allowPaging="true" load="onLoad" actionBegin="begin" allowFiltering="true" toolbar="@(new List<string>() {"Add", "Edit", "Update", "Delete" })">
<e-data-manager url="/Home/UrlDataSource" adaptor="UrlAdaptor" insertUrl="/Home/Insert" updateUrl="/Home/Update" removeUrl="/Home/Remove"></e-data-manager>
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Normal"></e-grid-editSettings>
<e-grid-columns>
. . . . . . . .
<e-grid-column field="OrderDate" filterBarTemplate="filterBarTemplate" headerText="Order Date" format="yMd" type="date" width="170"></e-grid-column>
. . . . . . . .
</e-grid-columns>
</ejs-grid>
<script>
var secval;
var flag = true;
function onLoad() {
this.dataSource.dataSource.headers = [{ 'XSRF-TOKEN': $("input:hidden[name='__RequestVerificationToken']").val() }];
}
function createFilterDateRangePicker(args) {
var element = document.createElement('input');
element.id = args.column.field;
return element;
}
function begin(args) { //push the 2nd date value in to the columns
if (args.requestType === "filtering" && args.currentFilteringColumn === "OrderDate") {
if (args.columns[0]) {
args.columns[0].properties.operator = "greaterthanorequal"; //maintain the 1st date column operator value as “greaterthanorequal” instead of equal
}
args.columns.push({
actualFilterValue: {},
actualOperator: {},
field: "OrderDate",
ignoreAccent: false,
isForeignKey: false,
matchCase: false,
operator: "lessthan",
predicate: "and",
uid: this.getColumnByField(
args.currentFilteringColumn
).uid,
value: secval
});
}
}
function readFilterDateRangePicker(args) {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
return args.querySelector('input').ej2_instances[0].value[0].toLocaleDateString();//return the 1st date value as string format
}
function writeFilterDateRangePicker(args) {
var datePicker = new ej.calendars.DateRangePicker({
change: function (args) {
let grid = this.element.closest(".e-grid").ej2_instances[0];
if (args.value) {
secval = args.value[1];
grid.filterByColumn("OrderDate", "greaterthanorequal",args.value[0]); //filter the 1st date value
}
else
grid.removeFilteredColsByField(args.element.id);
},
cleared: function (args) {
let grid = this.element.closest(".e-grid").ej2_instances[0];
grid.removeFilteredColsByField(this.element.id);
}
});
datePicker.appendTo(args.element);
};
</script>
|