Wijmo 更優美的jQuery UI組件集:匯出Wijmo的GridView到Excel

來源:互聯網
上載者:User

Wijmo GridView 控制項不提供匯出Excel檔案的方法。本篇部落格介紹一種將Wijmo的GridView控制項儲存到Excel的簡單方法。你可以使用同樣的方法在C1 WebUI GridView上。

 

步驟1 : C1GridView綁定至資料來源

第一步是將C1GridView綁定到資料來源。為了簡單起見,我們將其綁定到C1Nwind.mdb的Customers表。

650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.bkjia.com/uploads/allimg/131228/132T42W1-0.png" width="896" height="330" />

 

步驟2 : 匯出C1GridView Excel

匯出到Excel需要分成兩步。第一步是將GridView儲存至一個HTML字串。

Web控制項有一個RenderControl()方法可以將伺服器端控制項的內容輸出到指定的HtmlTextWriter對象。如果啟用了Tracing,該方法還將儲存控制項的Trace資訊。然後該HtmlTextWriter對象輸出到一個StringWriter 對象。

下面的方法被用來建立一個字串:

 

 
  1. Public Function DataGridToExcel(ByVal dgExport As C1.Web.Wijmo.Controls.C1GridView.C1GridView) As String 
  2.  
  3.     '建立一個stringwriter 
  4.  
  5.     Dim stringWrite As New System.IO.StringWriter() 
  6.  
  7.     '建立一個使用該stringwriter的htmltextwriter 
  8.  
  9.     Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite) 
  10.  
  11.     Dim dg As C1.Web.Wijmo.Controls.C1GridView.C1GridView 
  12.  
  13.     'just set the input datagrid = to the new dg grid 
  14.  
  15.     dg = dgExport 
  16.  
  17.     '將header的字型加粗 
  18.  
  19.     dg.HeaderStyle.Font.Bold = True 
  20.  
  21.     '如果需要,這裡是在組件層級改變顏色/格式 
  22.  
  23.     dg.HeaderStyle.ForeColor = System.Drawing.Color.Black 
  24.  
  25.     dg.RowStyle.ForeColor = System.Drawing.Color.Black 
  26.  
  27.     '綁定修改後的datagrid 
  28.  
  29.     '告訴datagrid將自己呈現到我們提供的htmltextwriter 
  30.  
  31.     dg.AllowSorting = False 
  32.  
  33.     dg.AllowPaging = False 
  34.  
  35.     dg.AllowCustomPaging = False 
  36.  
  37.     '新的代碼 
  38.  
  39.     Dim parent As Control = dg.Parent 
  40.  
  41.     parent.Controls.Remove(dg) 
  42.  
  43.     dg.RenderControl(htmlWrite) 
  44.  
  45.     '新的代碼 
  46.  
  47.     parent.Controls.Add(dg) 
  48.  
  49.     '輸出HTML 
  50.  
  51.     Return stringWrite.ToString() 
  52.  
  53. End Function 

 

 

650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.bkjia.com/uploads/allimg/131228/132T45021-1.png" width="897" height="157" />

 

下一步,我們將在一個Button Click事件中調用這個DownloadToExcel 方法從儲存的字串建立一個excel檔案。

 

 
  1. Public Sub DownloadToExcel(ByVal content As String, ByVal response As HttpResponse) 
  2.  
  3. '清理 response.object 
  4.  
  5. response.Clear() 
  6.  
  7. response.Buffer = True 
  8.  
  9. response.Charset = "" 
  10.  
  11. '設定響應的MIME類型為excel 
  12.  
  13. response.ContentType = "application/vnd.ms-excel" 
  14.  
  15. response.ContentEncoding = New System.Text.UTF8Encoding() 
  16.  
  17. response.Write(content) 
  18.  
  19. response.End() 
  20.  
  21. End Sub 

 

 650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.bkjia.com/uploads/allimg/131228/132T42L6-2.png" width="604" height="404" />

 

實現時的問題

在相當多的情況下,你會在匯出時遇到一些錯誤。你可能會收到一條錯誤資訊:“RegisterForEventValidation 只能在Render()過程中被調用;”。在這種情況下,請嘗試以下方法:


1. 你可以向下面的文章描述的那樣,重載VerifyRenderingInServerForm 方法:

http://connect.microsoft.com/VisualStudio/feedback/details/118285/rendercontrol-doesnt-work-for-gridview

Public Overrides Sub VerifyRenderingInServerForm(control As Control)

End Sub

 

2. 為了避免收到“RegisterForEventValidation 只能在Render()過程中被調用;”異常,可以關閉Page.EnableEventValidation 或者將RenderControl方法調用放置在一個try-catch塊中。

此外,如果gridview包含一個複選框或者一個模板列,你會收到上面的錯誤。目前已發現微軟發布的GridView會發生同樣的錯誤。由於C1GridView繼承自微軟發布的GridView,所以它是C1GridView的已知設計問題。

 

下載樣本 

 

Wijmo下載,請進入Studio for ASP.NET Wijmo 2012 v1正式發布2012.03.22更新)!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.