Как обновить и перезагрузить источник данных сетки Kendo UI MVC со стороны клиента при поиске

У меня есть сетка пользовательского интерфейса кендо, похожая на эту

@(Html.Kendo().Grid<MyViewModel>()
        .Name("MyGrid")
        .Columns(columns =>
        {
            columns.Bound(a => a.column1);
            columns.Bound(a => a.column2;
        }
        .Pageable(page => page.PageSizes(true))
        .Scrollable(src => src.Height("auto"))
        .Sortable()
        .Filterable()
        .Reorderable(reorder => reorder.Columns(true))
        .ColumnMenu()
        .Events(e =>
            {
                e.DataBound("onDataBound");
            })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(10)
            .Read(read => read.Action("GetMyList_Read", "MyController"))  

        )
    )

Источник данных в этой сетке загружается из действия «GetMyList_Read» при загрузке страницы. У меня есть фильтр, который работает, вводя параметры фильтра во встроенные фильтры кендо. И это работает нормально. Я хочу выполнить поиск в коде на стороне сервера, чтобы повысить производительность, вместо загрузки всех данных на стороне клиента и фильтрации. Кроме того, один из параметров поиска требует поиска новой таблицы БД каждый раз, когда выполняется поиск, поэтому наличие файловой системы на стороне сервера очень поможет.


person Sophonias    schedule 11.06.2014    source источник


Ответы (1)


Вы можете просто изменить действие чтения, включив в него

.Read(read => read.Action("GetMyList_Read", "MyController").Data("AddFilters"))

Затем добавьте немного JavaScript, чтобы заполнить ваши фильтры примерно так:

<script>
 Function AddFilters()
{
 Return { filter: "some value");
 }
</script>

Затем просто измените действие чтения, чтобы принять дополнительный параметр.

Например, общедоступный jsonresult GetMyList_Read ([DataSourceRequest] запрос DataSourceRequest, строковый фильтр)

Надеюсь, это даст вам достаточно для работы, но если вам нужен более полный пример, дайте мне знать, и я опубликую что-то более полное.

person David Shorthose    schedule 11.06.2014