kendo-ui grid serverfiltering выпадающий список фильтрации столбцов

Я пытаюсь заставить сетку kendoui поддерживать фильтрацию с помощью раскрывающегося списка в качестве фильтра. Я хочу, чтобы пользователи могли выбирать из списка всех доступных параметров, а не заставлять их вводить фильтр вручную.

У меня есть общий источник данных, подобный этому:

var transport = {
    read: {
        url: "/api/account/changes",
        type: "POST",
        dataType: "json"
    }
};

Этот метод возвращает объект, который выглядит следующим образом:

public class Response {
  public IEnumerable Data { get;set; }
  public int Count { get; set; }
  public IEnumerable Users { get; set; }
}

Затем у меня есть два источника данных, привязанных к одному транспорту:

var masterDataSource = new kendo.data.DataSource({
    transport: transport,
    schema: {
        data: "Data",
        total: "Count",
        model: {
            id: "Id",
            fields: {
                Id: { type: "number" },
                User: { type: "string" },
                // other columns
                Value: { type: "string" }
            }
        }
    },
    pageSize: 20,
    serverPaging: true,
    serverFiltering: true,
    serverSorting: true
});

var usersDataSource = new kendo.data.DataSource({
    transport: transport,
    schema: {
        data: "Users"
    }
});

Моя сетка привязана к masterDataSource:

$("#grid").kendoGrid({
    dataSource: masterDataSource,
    height: 800,
    navigatable: true,
    resizable: true,
    scrollable: true,
    sortable: {
        mode: "single",
        allowUnsort: false
    },
    filterable: {
        extra: false,
        operators: {
            string: {
                startswith: "Starts with",
                eq: "Is equal to",
                neq: "Is not equal to"
            },
            date: {
                greaterthan: "Greater than",
                lessthan: "Less than"
            }
        }
    },
    pageable: true,
    columns: [
        {
            field: "User",
            title: "User",
            width: 130,
            filterable: {
                ui: userFilter
            }
        },
        // other columns
        {
            field: "Value",
            title: "Value",
            filterable: false,
            width: 70
        }
    ]
});

Затем я определил функцию для представления фильтра:

function userFilter(element) {
    console.log("setting up user filter");
    element.kendoDropDownList({
        dataSource: usersDataSource,
        optionLabel: "--Select One--"
    });
    console.log("set up user filter");
}

Однако моя функция userFilter никогда не вызывается, и я получаю общую фильтрацию столбцов, а не фильтр раскрывающегося списка. Этот макет очень похож на пример фильтрации на http://demos.kendoui.com/web/grid/filter-menu-customization.html, но я не могу заставить раскрывающийся список работать как у них.

Я ценю вашу помощь в этом.


person Steve Bering    schedule 18.05.2013    source источник


Ответы (1)


Проблема в том, что вы никогда не вызываете функцию userFilter. Под вашим фильтруемым свойством вам нужно добавить свойство ui и установить его равным функции, которую вы хотите вызвать. Как это:

filterable: { ui: userFilter }

Надеюсь, это поможет.

person eggers    schedule 18.11.2013