这里有新鲜出炉的精品教程,程序狗速度看过来!
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"/>
好了 问题解决了 结博。
(adsbygoogle = window.adsbygoogle || []).push({});
来源: http://www.phperz.com/article/17/0629/282684.html