jQuery之导出Wijmo的GridView到Excel

开发 前端
在相当多的情况下,你会在导出时遇到一些错误。你可能会收到一条错误信息:“RegisterForEventValidation 只能在Render()过程中被调用;”

Wijmo GridView 控件不提供导出Excel文件的方法。本篇博客介绍一种将Wijmo的GridView控件保存到Excel的简单方法。你可以使用同样的方法在C1 WebUI GridView上。

步骤1 : C1GridView绑定至数据源

***步是将C1GridView绑定到数据源。为了简单起见,我们将其绑定到C1Nwind.mdb的Customers表。

image

步骤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 

image

下一步,我们将在一个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 

 image

实现时的问题

在相当多的情况下,你会在导出时遇到一些错误。你可能会收到一条错误信息:“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更新)!

原文链接:http://www.cnblogs.com/powertoolsteam/archive/2012/04/25/2469717.html

责任编辑:张伟 来源: 葡萄城控件技术团队的博客
相关推荐

2011-05-31 15:56:03

Android Gridview

2022-12-29 08:49:40

SpringBootExcel

2020-09-22 09:41:09

前端

2009-07-27 15:58:25

添加GridView

2011-09-08 15:29:50

Android Wid界面GridView

2020-04-21 10:45:47

PythonWordExcel

2024-09-12 17:23:02

2012-04-09 10:34:21

jQuery

2023-02-03 08:21:30

excelMySQL

2009-09-07 14:41:48

GridView展开与

2009-12-04 16:49:38

PHP导出Excel乱

2023-02-25 10:04:21

JavaExcel导出功能

2021-03-11 08:24:48

Javapoi数据脱敏

2010-07-21 09:18:44

SQL Server

2022-02-09 18:28:46

多线程Excel代码

2021-04-20 09:32:15

Excel框架工具

2024-07-30 15:56:42

2009-07-28 08:24:16

GridView绑定数

2009-08-18 16:14:05

C# 操作Excel

2009-08-18 16:20:09

C# 操作Excel
点赞
收藏

51CTO技术栈公众号