如题:我是想实现先弹出点击 OK之后在弹出的功能,但是结果只弹出第二个框,并且所有数据都在一行.这是怎么回事呀?

解决方案 »

  1.   

    把代码传上来: 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();
        }
      

  2.   

    “并且所有数据都在一行” 这句是什么意思
    通过客户端来控制attachment?这个不可能吧,除非进行回发
      

  3.   

    用回发吧,确认后sumit,然后再执行ExportToExcel
      

  4.   


    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");        Response.ClearContent(); //加句这个,出来后就不会在一行了
      

  5.   

    我试了,那个弹不出来,而如果改以下这样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文件打开后是空的
      

  6.   

    噢,是我错了,这样改下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);
                
            }
        }就可以了
      

  7.   


    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('操作成功!'); 试试
      

  8.   

    我是想让弹出对话框 和导出excel表 两个功能同时实现.
      

  9.   

    HttpContext.Current.Response.Write("<script language='javascript'>alert('导出成功!')</script>");
    HttpContext.Current.Response.Write("<script language='javascript'>window.open('../Template_temp/"+FileName+".xls','_bank')</script>");
      

  10.   

    上面的代码是从公司项目里分离出来的功能,不过我现在更换了导出的方法.数据直接导出到excel文件里了.没有弹出打开保存取消框,而且“操作成功”的框也弹出来了。谢谢楼上的批评与帮助!!结贴,来者有分!!