Настройки MVC 5 DevExpress. Событие BeforeExport не запускается

У меня полностью рабочий GridView с помощью DevExpress с MVC 5,

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

Теперь мне нужно скрыть некоторые столбцы при экспорте, и я прочитал о BeforeExport имущество.

Вот что я сделал:

 var grid = Html.DevExpress().GridView(settings => {
    //blah blah stuff
     #region Export
        settings.Toolbars.Add(t => {
            t.EnableAdaptivity = true;
            t.Items.Add(GridViewToolbarCommand.ExportToXls);
            t.Items.Add(GridViewToolbarCommand.ExportToXlsx);
            t.Items.Add(GridViewToolbarCommand.ExportToCsv);
        });

        settings.SettingsExport.EnableClientSideExportAPI = true;
        settings.SettingsExport.ExcelExportMode = DevExpress.Export.ExportType.DataAware;
        settings.SettingsExport.RenderBrick = (sender, e) => {
            if (e.RowType == GridViewRowType.Data && e.VisibleIndex % 2 == 0)
                e.BrickStyle.BackColor = System.Drawing.Color.FromArgb(0xEE, 0xEE, 0xEE);
        };

        settings.SettingsExport.Landscape = true;
        settings.SettingsExport.BeforeExport = (sender, e) => {
            MVCxGridView gridView = sender as MVCxGridView;
            if (sender == null) return;
            gridView.Columns["myColumnFieldNameToHide"].Visible = false;
        };
    #endregion
    //blah blah other stuff
}

Дело в том, что независимо от того, что я установил обратный вызов BeforeExport никогда не выполняется, я думаю, что событие никогда не запускается.

Что бы это могло быть?

1 ответ

Решение

Подобный вопрос обсуждался в официальном билете DevExpress.

Вы можете найти обходной путь для этого сценария: обработайте событие ToolbarItemClick и измените видимость необходимых столбцов:

settings.ToolbarItemClick += (s, e) => 
{
    var gridView = s as MVCxGridView;
    if(gridView == null)
        return;
    if(e.Item.Command == GridViewToolbarCommand.ExportToXlsx) {
        gridView.Columns["Text"].Visible = false;
    }
};
Другие вопросы по тегам