2017-12-01 4 views
0

ich einen benutzerdefinierten Filter haben erstellen, die man aus den Kendo docs matches:Wie eine benutzerdefinierte (wiederverwendbar) Funktion für Filtermenüs

https://www.telerik.com/kendo-angular-ui/components/grid/data-operations/filtering/reusable-filter/

@Component({ 
    selector: 'my-dropdown-filter', 
    template: ` 
    <kendo-dropdownlist 
     [data]="data" 
     (valueChange)="onChange($event)" 
     [defaultItem]="defaultItem" 
     [value]="selectedValue" 
     [valuePrimitive]="true" 
     [textField]="textField" 
     [valueField]="valueField"> 
    </kendo-dropdownlist> 
    ` 
}) 
export class DropDownListFilterComponent extends BaseFilterCellComponent { 

    public get selectedValue(): any { 
     const filter = this.filterByField(this.valueField); 
     return filter ? filter.value : null; 
    } 

    @Input() public filter: CompositeFilterDescriptor; 
    @Input() public data: any[]; 
    @Input() public textField: string; 
    @Input() public valueField: string; 

    public get defaultItem(): any { 
     return { 
      [this.textField]: "Select item...", 
      [this.valueField]: null 
     }; 
    } 

    constructor(filterService: FilterService) { 
     super(filterService); 
    } 

    public onChange(value: any): void { 
     this.applyFilter(
      value === null ? // value of the default item 
       this.removeFilter(this.valueField) : // remove the filter 
       this.updateFilter({ // add a filter for the field with the value 
        field: this.valueField, 
        operator: "eq", 
        value: value 
       }) 
     ); // update the root filter 
    } 
} 

Es arbeitet mit „Reihe“ Artrasterfeld fein Filter. Wenn ich jedoch versuche, den Stil "Menü" zu ändern, wird der Filter immer angewendet, wenn das Dropdown-Menü geändert wird. Für jeden anderen Filter in diesem Stil müssen Sie auf die Schaltfläche "Filter" klicken. Wenn ich den Code in der Änderungsroutine zu:

ändern Dann funktioniert die Filterschaltfläche Funktion wie erwartet; aber es filtert das Gitter nicht wirklich. Ich bin erwartet gibt es eine Methode zu überschreiben, die aufgerufen wird, wenn "Filter" angeklickt wird, aber kein Glück hatte, es zu finden. Ich habe auch versucht, nur die Filtereigenschaft zu setzen (selbe Wirkung) oder applyFilter verwendend, die gerade sofort wieder filtert.

Wie verwenden Sie benutzerdefinierte Filterkomponenten mit den "Menü" -Stil-Filtern in Kendo Angular Grids?

Antwort

0

, wenn die Filtermenüs Anpassen Sie die kendoGridFilterMenuTemplate Richtlinie (anstelle des kendoGridFilterCellTemplate eins) verwenden müssen.

Step-by-step explanation of the process and a runnable example are available in the docs.

+0

Ich verstehe das; aber ich habe immer noch das oben aufgeführte Problem (es funktioniert überhaupt nicht, wenn ich die Schritte nicht befolge, die du erwähnst). Ich habe diese Probe jedoch nicht gefunden. Ich werde es mit meinem Code vergleichen und sehen, was anders ist. Vielen Dank! – BradleyDotNET

+0

Sieht so aus, als müssten Sie den Filterwechsel manuell durchführen ... es muss eine bessere Option geben. – BradleyDotNET

Verwandte Themen