Response.write()弹出对话框和导出excel表弹出提示保存框不能共存??? 如题:我是想实现先弹出点击 OK之后在弹出的功能,但是结果只弹出第二个框,并且所有数据都在一行.这是怎么回事呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把代码传上来: public DataTable dtTable = new DataTable(); protected void Page_Load(object sender, EventArgs e) { dtTable.Columns.Add("iuserid", typeof(string)); dtTable.Columns.Add("username", typeof(string)); DataRow dr; dr= dtTable.NewRow(); dr["iuserid"] = "1"; dr["username"] = "Tony"; dtTable.Rows.Add(dr); dr = dtTable.NewRow(); dr["iuserid"] = "2"; dr["username"] = "Danny"; dtTable.Rows.Add(dr); //Response.Write("<script>javascript:window.confirm('你确定导出重复记录吗?')</script>"); Response.Write("<script>alert('操作成功!');</script>"); //Response.End(); ExportToExcel(dtTable); } protected void ExportToExcel(DataTable dtTable) { if (dtTable == null) { return; } HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Random r = new Random(); string excelname = "" + DateTime.Now.ToString("yyyy-MM-dd") + "" + r.Next(1000, 9999) + ".xls"; resp.AppendHeader("Content-Disposition", "attachment;filename=" + excelname); string colHeaders = "", ls_item = ""; DataRow[] myRow = dtTable.Select(); int i = 0; int cl = dtTable.Columns.Count; for (i = 0; i < cl; i++) { if (i == (cl - 1)) { colHeaders += dtTable.Columns[i].Caption.ToString() + "\n"; } else { colHeaders += dtTable.Columns[i].Caption.ToString() + "\t"; } } //resp.Write(colHeaders); resp.Write(colHeaders); foreach (DataRow row in myRow) { for (i = 0; i < cl; i++) { if (i == (cl - 1)) { ls_item += row[i].ToString() + "\n"; } else { ls_item += row[i].ToString() + "\t"; } } resp.Write(ls_item); ls_item = ""; } resp.End(); } “并且所有数据都在一行” 这句是什么意思通过客户端来控制attachment?这个不可能吧,除非进行回发 用回发吧,确认后sumit,然后再执行ExportToExcel Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ClearContent(); //加句这个,出来后就不会在一行了 我试了,那个弹不出来,而如果改以下这样protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { ExportToExcel(dtTable); } else { dtTable.Columns.Add("iuserid", typeof (string)); dtTable.Columns.Add("username", typeof (string)); DataRow dr; dr = dtTable.NewRow(); dr["iuserid"] = "1"; dr["username"] = "Tony"; dtTable.Rows.Add(dr); dr = dtTable.NewRow(); dr["iuserid"] = "2"; dr["username"] = "Danny"; dtTable.Rows.Add(dr); ClientScript.RegisterStartupScript(GetType(),"alertScript","alert('操作成功!');form1.submit();",true); } }虽然这样能弹出“操作成功”来,但excel文件打开后是空的 噢,是我错了,这样改下protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { DataTable dtTable = new DataTable(); dtTable.Columns.Add("iuserid", typeof(string)); dtTable.Columns.Add("username", typeof(string)); DataRow dr; dr = dtTable.NewRow(); dr["iuserid"] = "1"; dr["username"] = "Tony"; dtTable.Rows.Add(dr); dr = dtTable.NewRow(); dr["iuserid"] = "2"; dr["username"] = "Danny"; dtTable.Rows.Add(dr); ExportToExcel(dtTable); } else { ClientScript.RegisterStartupScript(GetType(),"alertScript","alert('操作成功!');form1.submit();",true); } }就可以了 public static void Alert(string msg) { Page handler = (Page)HttpContext.Current.Handler; handler.ClientScript.RegisterStartupScript(handler.GetType(), "Alert", string.Format("alert('{0}');", msg), true); }把你的Response.Write("<script>alert('操作成功!');</script>"); 换成 Alert('操作成功!'); 试试 我是想让弹出对话框 和导出excel表 两个功能同时实现. HttpContext.Current.Response.Write("<script language='javascript'>alert('导出成功!')</script>");HttpContext.Current.Response.Write("<script language='javascript'>window.open('../Template_temp/"+FileName+".xls','_bank')</script>"); 上面的代码是从公司项目里分离出来的功能,不过我现在更换了导出的方法.数据直接导出到excel文件里了.没有弹出打开保存取消框,而且“操作成功”的框也弹出来了。谢谢楼上的批评与帮助!!结贴,来者有分!! 数据控件如何输出字符串 Gridview 客户端取得 同一行的其他控件 如何实现注册成功后局部刷新显示注册信息? 操作OFFICE 关于查询语句,请大侠帮忙 关于datagrid编辑的疑问 想知道 项目打开问题!! Spring.NET+Nhibernate+MVC4 框架搭建中遇到了问题请高手解答 关于.Net FrameWork 1.1 和1.0的共存问题 求助定时设置。(在线检测软件) C# 刷新问题
protected void Page_Load(object sender, EventArgs e)
{
dtTable.Columns.Add("iuserid", typeof(string));
dtTable.Columns.Add("username", typeof(string));
DataRow dr;
dr= dtTable.NewRow();
dr["iuserid"] = "1";
dr["username"] = "Tony";
dtTable.Rows.Add(dr); dr = dtTable.NewRow();
dr["iuserid"] = "2";
dr["username"] = "Danny";
dtTable.Rows.Add(dr); //Response.Write("<script>javascript:window.confirm('你确定导出重复记录吗?')</script>");
Response.Write("<script>alert('操作成功!');</script>");
//Response.End();
ExportToExcel(dtTable);
}
protected void ExportToExcel(DataTable dtTable)
{
if (dtTable == null)
{
return;
}
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Random r = new Random();
string excelname = "" + DateTime.Now.ToString("yyyy-MM-dd") + "" + r.Next(1000, 9999) + ".xls";
resp.AppendHeader("Content-Disposition", "attachment;filename=" + excelname);
string colHeaders = "", ls_item = ""; DataRow[] myRow = dtTable.Select();
int i = 0;
int cl = dtTable.Columns.Count; for (i = 0; i < cl; i++)
{
if (i == (cl - 1))
{
colHeaders += dtTable.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dtTable.Columns[i].Caption.ToString() + "\t";
} }
//resp.Write(colHeaders);
resp.Write(colHeaders); foreach (DataRow row in myRow)
{ for (i = 0; i < cl; i++)
{
if (i == (cl - 1))
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
} }
resp.Write(ls_item);
ls_item = ""; }
resp.End();
}
通过客户端来控制attachment?这个不可能吧,除非进行回发
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ClearContent(); //加句这个,出来后就不会在一行了
{ if (IsPostBack)
{
ExportToExcel(dtTable);
}
else
{
dtTable.Columns.Add("iuserid", typeof (string));
dtTable.Columns.Add("username", typeof (string));
DataRow dr;
dr = dtTable.NewRow();
dr["iuserid"] = "1";
dr["username"] = "Tony";
dtTable.Rows.Add(dr); dr = dtTable.NewRow();
dr["iuserid"] = "2";
dr["username"] = "Danny";
dtTable.Rows.Add(dr);
ClientScript.RegisterStartupScript(GetType(),"alertScript","alert('操作成功!');form1.submit();",true);
}
}虽然这样能弹出“操作成功”来,但excel文件打开后是空的
{ if (IsPostBack)
{
DataTable dtTable = new DataTable();
dtTable.Columns.Add("iuserid", typeof(string));
dtTable.Columns.Add("username", typeof(string));
DataRow dr;
dr = dtTable.NewRow();
dr["iuserid"] = "1";
dr["username"] = "Tony";
dtTable.Rows.Add(dr); dr = dtTable.NewRow();
dr["iuserid"] = "2";
dr["username"] = "Danny";
dtTable.Rows.Add(dr);
ExportToExcel(dtTable);
}
else
{
ClientScript.RegisterStartupScript(GetType(),"alertScript","alert('操作成功!');form1.submit();",true);
}
}就可以了
public static void Alert(string msg)
{
Page handler = (Page)HttpContext.Current.Handler;
handler.ClientScript.RegisterStartupScript(handler.GetType(), "Alert", string.Format("alert('{0}');", msg), true);
}把你的Response.Write("<script>alert('操作成功!');</script>");
换成 Alert('操作成功!'); 试试
HttpContext.Current.Response.Write("<script language='javascript'>window.open('../Template_temp/"+FileName+".xls','_bank')</script>");