目 录
1. Devexpress ASPxGridView的ASPxGridViewExporter.1
(1)使用.Net Framework框架中的HtmlDocument.3
(2)使用Codeplex第三方控件:Html Agility Pack.3
(1) 公共页面元素保存(WebControlExporter)类...4
(2) 文档保存类型枚举(DocumentType)...4
需求
用户可将一页面的全部或指定的部分选择性的保存至本地,并且可选择性的设置保存格式(如MS/Word、MS/Excel、HTML)。
在将页面(或指定部分)保存至客户端本地时,会出现下图所示的问题:包含多余无效的元素。要求剔除无关的页面控件。
方案选择
1. Devexpress ASPxGridView的ASPxGridViewExporter
方案:在包含ASPxGridView控件的页面中,使用ASPxGridViewExporter导出数据表格。
问题:这种方法导出的样式效果有限制,只能是一行一行记录展示的形式,可以包含表头。但是不能实现将我们自定义复杂表格样式原样导出保存的功能。
2. ActiveX对象
方案:使用ActiveX对象。
问题:此方案对客户端的浏览器的安全设置有要求。
3. JS构造请求回复(Response)
方案:在页面中使用JS打开一个全新的请求回复(Response),将页面(或指定部分)写入Response中,并使用文档对象模型(Document)中的“exeCommand”方法执行保存命令(“SaveAs”),浏览器将自动填出“保存文件”提示框。
代码示例:
问题:客户端浏览器(MS/IE)基于安全的考虑,只能存为“HTML”或平面文件(“.csv”)。虽然将文件的后缀改写后(如改为“.doc”),MS/Office可打开文件。但是不符合用户的操作习惯,特别是计算机基础不熟练的用户。
4. 服务器端构造请求回复(Response)
方案:用户在页面中点击按钮发出“保存至本地”请求后,在服务器端构造出相应的回复(Response),将要求的页面(或指定的部分)写入回复中。同时设置回复的文档类型(Content-Type)及编码等(文档头)信息。
注意需要去除需要进行导出的ASPX页面的自验证功能:
共有2步:
1、 配置页面“@Page”;
<%@ PageEnableEventValidation="false"%>