लागू करने के लिए मैं इसे बिना किसी किस्मत के काम करने की कोशिश कर रहा हूं। मैं मदद के लिए इन संसाधनों को संदर्भित किया गया है: http://swimlane.github.io/ngx-datatable/#filter
https://github.com/swimlane/ngx-datatable/blob/master/demo/basic/filter.component.tsएनजीएक्स डेटाटेबल कॉलम फ़िल्टरिंग
असल में मैं सिर्फ मेरी फिल्टर एक एकल स्तंभ की तुलना में अधिक करने के लिए लागू करने के लिए अनुमति देना चाहते हैं, हर स्तंभ को संभालने के लिए कोड को लागू करने के बिना। (कुछ datatables 20+ कॉलम है!)
उदाहरण कोड:
//HTML
<input type='text' placeholder='Filter' (keyup)='updateFilter($event.target.value)' />
<ngx-datatable
class="material"
columnMode="force"
[columns]="gridProperties.FilteredColumns"
[footerHeight]="50"
[loadingIndicator]="gridLoadingIndicator"
[rows]="filteredList"
[scrollbarH]="false"
[scrollbarV]="true"
[selected]="selectedItem"
[selectionType]="'single'"
style="min-height:400px;">
</ngx-datatable>
//TYPESCRIPT
public items: Item[];
updateFilter(filterValue) {
const lowerValue = filterValue.toLowerCase();
this.filteredList = this.items.filter(item => item.name.toLowerCase().indexOf(lowerValue) !== -1 || !lowerValue);
}
यहाँ मैं स्पष्ट रूप से अभी-अभी अपना आइटम सरणी के 'नाम' संपत्ति के लिए छानने से निपटने कर रहा हूँ। यह बहुत अच्छा काम करता है, लेकिन जैसा कि मैंने उल्लेख किया था, अगर ग्रिड में कई कॉलम हैं तो मैं उन सभी को संभालने के लिए एक विधि चाहता हूं। किसी भी मदद या सुझाव की सराहना की जाती है।
updateFilter(filter: string): void {
const val = filter.trim().toLowerCase();
this.filteredList = this.items.slice().filter((item: any) => {
let searchStr = '';
for (let i = 0; i < this.gridProperties.FilteredColumns.length; i++) {
searchStr += (item[this.gridProperties.FilteredColumns[i]]).toString().toLowerCase();
}
return searchStr.indexOf(val) !== -1 || !val;
});
}
मैं कोई गलती की नहीं हुआ, तो इसे सही ढंग से काम करना चाहिए:
यह एक बढ़िया सुविधा :)) –
आप इस के लिए एक समाधान मिला होगा? –