extjs form表单submit提交到ashx文件,ashx中处理数据后需要将数据与excel文件输出

ai51 2015-04-11 06:04:51
html页面:
if (form.isValid()) { //若验证通过
//以ajax方式提交
form.submit({
type: 'POST',
url: '../calculate/calcu.ashx',
waitMsg: '正在提交数据',
failure: function (form, action) { //若提交失败
switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID:
Ext.Msg.alert('失败', '提交参数中包括无效值');
break;
case Ext.form.action.Action.CONNECT_FAILURE:
Ext.Msg.alert('失败', '无法访问服务器资源');
break;
case Ext.form.action.Action.SERVER_INVALID: //服务器响应的sucess为false
Ext.Msg.alert('失败', '服务器响应出错');
}
},
success: function (form, action) {
Ext.Msg.alert('操作', '保存成功!');
}
})

ashx文件中:
System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
dg.DataSource = resultTable;//我存储最终结果的datatable
dg.DataBind();
//输出
//定义文档类型、字符编码  
context.Response.Clear();
context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("test.xls", Encoding.UTF8).ToString());
context.Response.Charset = "";
context.Response.ContentEncoding = Encoding.Default;
context.Response.ContentType = "application/ms-excel";
dg.EnableViewState = false;
//定义一个输入流  
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
//目标数据绑定到输入流输出 
dg.RenderControl(hw);
//GvContract 绑定datagrid,或其他支持obj.RenderControl()属性的控件  
//ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "info", tw.ToString(), false);

context.Response.Write(tw.ToString());

context.Response.End();
然后html页面中一直报出 服务器响应出错 这是响应的格式不对,
我加了下面的代码
public class data
{
public bool success;
public string sdata;
}

//下的代码加到了 context.Response.Write(tw.ToString()); 之前,还是提示错误。
data m_data = new data();
m_data.success = true;
m_data.sdata = "成功";
string result = JsonConvert.SerializeObject(m_data);
context.Response.Write(result);
如何既能完成验证又能实现数据的导出。。。。
完全新手,分不多,求大神顶


...全文
172 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你要生成excel文件,ajax无法接受文件2进制数据流,除非你的表单包含文件,ext提交到iframe可以弹出保存文件对话框 context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("test.xls", Encoding.UTF8).ToString()); 至于报错自己检查服务器端代码,ext返回提交后需要接受("success":true}字符串,返回其他内容会报错

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧