程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 如何將包含自定義控件GridView導出到Excel

如何將包含自定義控件GridView導出到Excel

編輯:關於ASP.NET

今天有人問我,如果Girdview模板列裡使用了自定義控件,那導出的時候如何處理?

比如該自定義控件包含一個Dropdownlist和三個Label控件,其中用來在頁面上顯示數據的是其中一個 Label控件,現在的問題是,如果不在PrepareControlForExport()中對該自定義控件進行處理,那麼導 出的Excel文件的對應Gridview中使用了自定義控件的列的內容全部相同(為Dropdownlist控件的第一個 Item),但是對該自定義控件進行處理的話,不知道該如何才能正確的取出它的值(用來顯示的label中的 值),試圖無法把自定義控件轉換成Dropdowlist和Label中的任何一種,但強制轉換的話運行到該語句會 報錯。

我們首先來看看在GridView導出到Excel和開源圖表工具提到的導出工具中的開發,源文件可以在這裡 下載:Export GridView to Excel

在GridViewExportUtil.cs中,函數PrepareControlForExport是這樣的:

/// <summary>
  /// Replace any of the contained controls with literals
  /// </summary>
  /// <param name="control"></param>
  private static void PrepareControlForExport(Control control)
  {
    for (int i = 0; i < control.Controls.Count; i++)
    {
      Control current = control.Controls[i];
      if (current is LinkButton)
      {
        control.Controls.Remove(current);
        control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
      }
      else if (current is ImageButton)
      {
        control.Controls.Remove(current);
        control.Controls.AddAt(i, new LiteralControl((current as 

ImageButton).AlternateText));
      }
      else if (current is HyperLink)
      {
        control.Controls.Remove(current);
        control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
      }
      else if (current is DropDownList)
      {
        control.Controls.Remove(current);
        control.Controls.AddAt(i, new LiteralControl((current as 

DropDownList).SelectedItem.Text));
      }
      else if (current is CheckBox)
      {
        control.Controls.Remove(current);
        control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? 

"True" : "False"));
      }
      if (current.HasControls())
      {
        GridViewExportUtil.PrepareControlForExport(current);
      }
    }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved