2017-12-19 17 views
0

DevExpressを使用して、完全に動作するGridViewがあります。MVC 5 DevExpress settings.BeforeExportイベントが発生しません。

データをさまざまな形式でエクスポートする可能性を追加したいと思います。私は、いくつかのオンラインの例に従うことでそれを行うことができました。

エクスポートするときにいくつかの列を非表示にする必要があります。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のために設定したコールバックが実行されることはありません、私の推測では、イベントが発生されることはありませんされています。

何ができますか?

答えて

2

同様の質問がofficial DevExpress ticketで議論されました。

あなたはこのシナリオの回避策を見つけることができます: 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; 
    } 
}; 
+0

あなたは人生の救世主です。ありがとう! – magicleon

関連する問題