报表的预览与下载应该怎么弄。
下了一段代码,执行时没反应,谁帮忙看看! 首先,建立基本的页面default.aspx <form id="form1" runat="server"> 
<div> 
<asp:GridView ID="GridView1" runat="server"> 
</asp:GridView> 
</div> 
<br/> 
<asp:Button ID="BtnExport" runat="server" on_Click="BtnExport_Click" 
Text="Export to Excel" /> 
</form> 在default.aspx.cs中,写入如下代码: 
protected void Page_Load(object sender, EventArgs e) 

 if (!Page.IsPostBack) 
 { 
  BindData(); 
 } 

private void BindData() 

 string query = "SELECT * FROM customers"; 
 SqlConnection myConnection = new SqlConnection(ConnectionString); 
 SqlDataAdapter ad = new SqlDataAdapter(query, myConnection); 
 DataSet ds = new DataSet(); 
 ad.Fill(ds, "customers"); 
 GridView1.DataSource = ds; 
 GridView1.DataBind(); 
} public override void VerifyRenderingInServerForm(Control control) 

 // Confirms that an HtmlForm control is rendered for 
} protected void Button1_Click(object sender, EventArgs e) 

 Response.Clear(); 
 Response.AddHeader("content-disposition","attachment;filename=FileName.xls"); 
 Response.Charset = "gb2312"; 
 Response.ContentType = "application/vnd.xls"; 
 System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
 System.Web.UI.HtmlTextWriter htmlWrite =new HtmlTextWriter(stringWrite);  GridView1.AllowPaging = false; 
 BindData(); 
 GridView1.RenderControl(htmlWrite);  Response.Write(stringWrite.ToString()); 
 Response.End(); 
 GridView1.AllowPaging = true; 
 BindData(); 

protected void paging(object sender,GridViewPageEventArgs e) 

 GridView1.PageIndex = e.NewPageIndex; 
 BindData(); 

解决方案 »

  1.   

    这是导出到Excel吧?
    我发一段代码你看看..using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.IO;public partial class Default2 : System.Web.UI.Page
    {    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataBinder();
            }
        }    private void DataBinder()
        {
            //连接数据库
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }  
        
        public override void VerifyRenderingInServerForm(Control control)
        {
           
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            string style = @"<style> .text { mso-number-format:\@; } </style> ";
            Response.ClearContent();
            Response.Buffer = true;
            string strFileName = "Myfile.xls";
            Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8));
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
            Response.ContentType = "application/excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            GridView1.RenderControl(htw);
            // Style is added dynamically
            Response.Write(style);
            Response.Write(sw.ToString());
            Response.End();
        }
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {            e.Row.Cells[1].Attributes.Add("class", "text");
            }
        }
      
    }
      

  2.   

    后台放个Gridview,和一个button就可以了
      

  3.   

    没有指定Response.ContentType也就是MIME信息
      

  4.   


    一样的效果,导出button没有效果
      

  5.   


    不明白啊,能不能详细说下
    Response.ContentType = "application/vnd.xls";