<ejs-combobox id="customers" placeholder="Select a customer" itemTemplate="@Html.Raw("<span><span class='name'>${CustomerID}</span><span class ='order'>${OrderID}</span></span>")" query="new ej.data.Query().select(['CustomerID','OrderID']).take(10) " allowFiltering="true" open="onOpen" filtering="onFiltering">
<e-combobox-fields text="CustomerID" value="OrderID"></e-combobox-fields>
<e-data-manager url="/Home/UrlDatasource" adaptor="UrlAdaptor" crossDomain="true"></e-data-manager>
</ejs-combobox> |
function onOpen(args) {
if (!this.isInitial) {
var start = 7;
var end = 12
var instance = document.getElementById("customers").ej2_instances[0];
var listElement = instance.popupObj.element.firstChild;
listElement.addEventListener('scroll', () => {
if ((listElement.scrollTop + listElement.offsetHeight >= listElement.scrollHeight && !isFiltered)) {
var filterQuery = this.query.clone();
this.dataSource.executeQuery(filterQuery.range(start, end)).then((event) => {
start = end;
end += 5;
instance.addItem(event.result);
}).catch((e) => {
});
}
})
}
}
function onFiltering(e) {
var instance = document.getElementById('customers').ej2_instances[0];
var query = new ej.data.Query();
query = (e.text !== '') ? query.where('CustomerID', 'startswith', e.text, true) : query;
e.updateData(instance.dataSource, query);
isFiltered = (e.text !== '') ? true : false;
}
function onChange(args) {
isFiltered = false;
} |
var predicate = new ej.data.Predicate('CustomerID', 'startswith', e.text, true);
predicate = predicate.or('OrderID', 'startswith', e.text, true);
var dropdown_query = new ej.data.Query();
// frame the query based on search string with filter type.
dropdown_query = (e.text !== '') ? dropdown_query.where(predicate) : dropdown_query;
// pass the filter data source, filter query to updateData method.
e.updateData(instance.dataSource, dropdown_query); |
function onOpen(args) {
if (!this.isInitial) {
var start = 7;
var end = 12
var instance = document.getElementById("customers").ej2_instances[0];
var listElement = instance.popupObj.element.querySelector('.e-content');
listElement.addEventListener('scroll', () => {
if ((listElement.scrollTop + listElement.offsetHeight >= listElement.scrollHeight && !isFiltered)) {
var filterQuery = this.query.clone();
this.dataSource.executeQuery(filterQuery.range(start, end)).then((event) => {
start = end;
end += 5;
instance.addItem(event.result);
}).catch((e) => {
});
}
})
}
}
|
<div class='content'>
<ejs-combobox id="customers" placeholder="Select a customer" headerTemplate="@Html.Raw("<span><span class='name'>CustomerID</span><span class ='order'>OrderID</span></span>")" itemTemplate="@Html.Raw("<span><span class='name'>${CustomerID}</span><span class ='order'>${OrderID}</span></span>")" query="new ej.data.Query().select(['CustomerID','OrderID']).take(10) " allowFiltering="true" open="onOpen" change="onChange" filtering="onFiltering">
<e-combobox-fields text="CustomerID" value="OrderID"></e-combobox-fields>
<e-data-manager url="/Home/UrlDatasource" adaptor="UrlAdaptor" crossDomain="true"></e-data-manager>
</ejs-combobox>
</div>
<div class='content'>
<ejs-combobox id="customers1" placeholder="Select a customer" headerTemplate="@Html.Raw("<span><span class='name'>CustomerID</span><span class ='order'>OrderID</span></span>")" itemTemplate="@Html.Raw("<span><span class='name'>${CustomerID}</span><span class ='order'>${OrderID}</span></span>")" query="new ej.data.Query().select(['CustomerID','OrderID']).take(10) " allowFiltering="true">
<e-combobox-fields text="CustomerID" value="OrderID"></e-combobox-fields>
<e-data-manager url="/Home/UrlDatasource" adaptor="UrlAdaptor" crossDomain="true"></e-data-manager>
</ejs-combobox>
</div>
</div>
function onChange(args) {
isFiltered = false;
var instance = document.getElementById("customers1").ej2_instances[0];
instance.value = args.itemData.CustomerID;
} |
function onOpen2(args) { console.log('onOpen2'); if (!this.isInitial) { var instance = this.element.ej2_instances[0]; var listElement = instance.popupObj.element.getElementsByClassName('e-dropdownbase')[0]; listElement.addEventListener('scroll', () => { if ((listElement.scrollTop + listElement.offsetHeight >= listElement.scrollHeight)) { var filterQuery = (this.typedString !== '') ? this.query.clone().where(this.fields.text, 'contains', this.typedString, true) : new ej.data.Query(); let start = this.element.ej2_instances[0].listData.length; let end = start + 10 console.log(`Get records from ${start} to ${end}`); this.dataSource.executeQuery(filterQuery.range(start, end)).then((event) => { instance.addItem(event.result); this.isInitial = true; //So it cannot register another listener when popup is opened again. }).catch((e) => { }); } }) } } function onFiltering2(e) { console.log('onFiltering2'); var instance = this.element.ej2_instances[0]; var query = instance.query; query.queries = query.queries.filter(item => item.fn != 'onWhere'); if (e.text !== '') { query = query.where(this.fields.text, 'contains', e.text, true); } e.updateData(instance.dataSource, query); } function onChange2(args) { console.log('onChange2'); var instance = this.element.ej2_instances[0]; instance.value = args.value; } |