发布于 2017-06-29 12:18:21 | 130 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ExtJS Javascript库

ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。


进项目一个多月不到。熟悉了这个二次开发的项目因为前面遗留下来的问题比较严重报表的导出和图表以及打印功能都没有实现,所以这两天工作量比较大。
项目是Extjs的主要针对于Extjs GridPanel数据导出这块先做一下说明。
我们可以通过Ext.getcmp()方法获取到GridPanel对象并通过重写的方法获取Excel字符串具体方法可以百度到。这个应该也不是什么大问题。
 
//输出报表 
function ExportReport(title) { 
var vExportContent = Ext.getCmp("gridPanel").getExcelXml(null, title); 
if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isIE8) { 
// var frm = document.createElement('form'); 
// frm.id = 'frmExtjs'; 
// frm.className = 'x-hidden'; 
// document.body.appendChild(frm); 
var f = document.createElement("form"); 
f.id = "frmExtjs"; 
document.body.appendChild(f); 
var i = document.createElement("input"); 
i.type = "hidden"; 
i.id = "exportContent"; 
i.name = "exportContent"; 
f.appendChild(i); 
i.value = vExportContent; 
Ext.Ajax.request({ 
url: 'frmExcel.aspx', 
method: 'POST', 
form: Ext.get('frmExtjs'), 
isUpload: true, 
params: { FileName: title + '.xls' } 
}) 
} else { 
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent); 
} 

以上是表单虚拟提交的方法。但是实验了很多方法。发现数据post过去后无法生成Excel通过生成后下载方法也无法实现。(即在服务器端无法生成,但本机可以生成。)经过多次思路的转折后来想到通过数据分析来调试。看看到底数据是否post到网页
 
string tmpFileName = "export.xls"; 
string tmpContent = Request["ExportContent"]; 
if (Request["FileName"] != "") 
{ 
tmpFileName = Request["FileName"];//获取传递来的文件名? 
tmpFileName = System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(tmpFileName));//处理中文文件名的情况 
} 
Response.Clear(); 
Response.Buffer = true; 
Response.ContentType = "application/vnd.ms-excel"; 
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + tmpFileName + "\""); 
Response.Charset = ""; 
System.IO.StringWriter tmpSW = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter tmpHTW = new System.Web.UI.HtmlTextWriter(tmpSW); 
tmpHTW.WriteLine(tmpContent); 
Response.Write(tmpSW.ToString()); 
Response.End(); 

以上是生成并下载的CS文件

后来找到这个工具

具体步骤很简单:

打开工具栏上的插件

虽然是英文的,但是不在话下。文档都是看的英文的。

两张近照

这边就可以看到post过去以后的报错信息。

这个是无刷新post无法看到的页面。正因为这个而纠结了好久。今天终于知道哪错了。

把错误信息复制到文本生成html文件。

原来是.net安全机制搞的鬼。

在web.config 的System.Web 后面加两句话就搞定了。

<httpRuntime requestValidationMode="2.0" />

<pages validateRequest="false" />

好了 问题解决了 结博。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务