MVC Kendo UI Grid — более 100 столбцов

У меня есть Kendo UI GRID (MVC) с более чем 100 столбцами. Не все столбцы видны при загрузке. По умолчанию видимыми столбцами являются 10. На странице рядом с сеткой есть флажки, в которых перечислены все столбцы. Если вы нажмете на флажок, в зависимости от того, отмечен он или нет, столбец появится или будет скрыт. Беда в том, что рендер сетки занимает почти 20 секунд, когда количество строк тоже огромно (и время увеличивается). Как лучше всего обрабатывать большое количество столбцов?


person Anthony Fernandes    schedule 30.07.2015    source источник
comment
Ваша сетка вообще выгружается?   -  person Robin Giltner    schedule 30.07.2015
comment
он выгружается, клиентская сторона. Я пробовал разорвать боковую подкачку, но прирост производительности незначителен.   -  person Anthony Fernandes    schedule 30.07.2015
comment
реально больше 100? какой смысл показывать всю эту информацию.. даже ваш экран не может отображать все эти столбцы одновременно, в этом случае вы должны использовать горизонтальную прокрутку..   -  person Dion Dirza    schedule 31.07.2015
comment
Ну, клиент хочет внешний вид листа Excel со всеми столбцами в формах в одной таблице.   -  person Anthony Fernandes    schedule 31.07.2015
comment
@AnthonyFernandes, вы можете изучить другие альтернативы, такие как Wijmo   -  person dnlgmzddr    schedule 01.08.2015
comment
Спасибо, да, я думаю, это был бы хороший вариант!   -  person Anthony Fernandes    schedule 03.08.2015


Ответы (1)


Я думаю, что приводить все 100 колонок для записи — не лучший способ работы. Возможно, вам нужна самая важная информация (максимум 10 столбцов) для всех записей и подробный обзор (с остальной информацией для конкретной записи, которую вы хотите проверить)

Если вы хотите увидеть более подробный пример, посмотрите здесь

мой подход следующий

@(Html.Kendo().Grid<YOURCLASS>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(e => e.imporantColumn1);
        columns.Bound(e => e.imporantColumn2);
        columns.Bound(e => e.imporantColumn3);            
    })
    .Sortable()
    .Pageable()
    .Scrollable()
    .ClientDetailTemplateId("template")
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(5)
        .Read(read => read.Action("HierarchyBinding_theBasicData", "Grid"))
    )
    .Events(events => events.DataBound("dataBound"))
)

и подробный шаблон

<script id="template" type="text/kendo-tmpl">
    @(Html.Kendo().TabStrip()
            .Name("tabStrip_#=ID#")
            .SelectedIndex(0)
            .Items(items =>
            {
                items.Add().Text("details").Content(@<text>
                    @(Html.Kendo().Grid<YOURCLASS>()
                        .Name("grid_#=ID#")
                        .Columns(columns =>
                        {
                            // the order columns
                        })
                        .DataSource(dataSource => dataSource
                            .Ajax()
                            .PageSize(5)
                            .Read(read => read.Action("HierarchyBinding_theRestOfInfo", "Grid", new { ID= "#=ID#" }))
                        )
                        .Pageable()
                        .Sortable()
                        .ToClientTemplate())
                </text>                        
                );               
            })
            .ToClientTemplate())
</script>
person cycopepe    schedule 30.07.2015
comment
Спасибо. Тем не менее, мы думали об этом, но клиент хочет больше внешнего вида Excel с одной строкой на запись, а не с детализацией. - person Anthony Fernandes; 31.07.2015