最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ExtJs Excel導(dǎo)出并下載IIS服務(wù)器端遇到的問(wèn)題

 更新時(shí)間:2011年09月16日 23:22:52   作者:  
進(jìn)項(xiàng)目一個(gè)多月不到。熟悉了這個(gè)二次開發(fā)的項(xiàng)目因?yàn)榍懊孢z留下來(lái)的問(wèn)題比較嚴(yán)重報(bào)表的導(dǎo)出和圖表以及打印功能都沒(méi)有實(shí)現(xiàn),所以這兩天工作量比較大。
項(xiàng)目是Extjs的主要針對(duì)于Extjs GridPanel數(shù)據(jù)導(dǎo)出這塊先做一下說(shuō)明。
我們可以通過(guò)Ext.getcmp()方法獲取到GridPanel對(duì)象并通過(guò)重寫的方法獲取Excel字符串具體方法可以百度到。這個(gè)應(yīng)該也不是什么大問(wèn)題。
復(fù)制代碼 代碼如下:

//輸出報(bào)表
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);
}

以上是表單虛擬提交的方法。但是實(shí)驗(yàn)了很多方法。發(fā)現(xiàn)數(shù)據(jù)post過(guò)去后無(wú)法生成Excel通過(guò)生成后下載方法也無(wú)法實(shí)現(xiàn)。(即在服務(wù)器端無(wú)法生成,但本機(jī)可以生成。)經(jīng)過(guò)多次思路的轉(zhuǎn)折后來(lái)想到通過(guò)數(shù)據(jù)分析來(lái)調(diào)試??纯吹降讛?shù)據(jù)是否post到網(wǎng)頁(yè)
復(fù)制代碼 代碼如下:

string tmpFileName = "export.xls";
string tmpContent = Request["ExportContent"];
if (Request["FileName"] != "")
{
tmpFileName = Request["FileName"];//獲取傳遞來(lái)的文件名?
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文件

clip_image002

后來(lái)找到這個(gè)工具

具體步驟很簡(jiǎn)單:

打開工具欄上的插件

clip_image004

雖然是英文的,但是不在話下。文檔都是看的英文的。

clip_image006

clip_image008

兩張近照

這邊就可以看到post過(guò)去以后的報(bào)錯(cuò)信息。

這個(gè)是無(wú)刷新post無(wú)法看到的頁(yè)面。正因?yàn)檫@個(gè)而糾結(jié)了好久。今天終于知道哪錯(cuò)了。

把錯(cuò)誤信息復(fù)制到文本生成html文件。

clip_image010

原來(lái)是.net安全機(jī)制搞的鬼。

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

<httpRuntime requestValidationMode="2.0" />

<pages validateRequest="false" />

好了 問(wèn)題解決了 結(jié)博。

相關(guān)文章

最新評(píng)論

老河口市| 康乐县| 平阴县| 即墨市| 蓬莱市| 莆田市| 苍溪县| 光山县| 乌拉特前旗| 深水埗区| 乌鲁木齐县| 阳西县| 康马县| 绥宁县| 临猗县| 栾城县| 湟中县| 宿州市| 黔西| 班玛县| 栾川县| 班玛县| 井陉县| 桃源县| 汕头市| 安顺市| 于田县| 商南县| 合阳县| 北海市| 安岳县| 黔江区| 颍上县| 柳林县| 葫芦岛市| 永安市| 曲沃县| 青铜峡市| 宾川县| 丹棱县| 竹山县|