2011-09-23 47 views
0

我将数据绑定到网格视图。将网格视图和一些文本下载到asp.net网站的excel中

string MysqlStatement = "SELECT TimeReceived,TimeRead, Concat(FirstName,', ',LastName) as Name FROM tbl_usermessage INNER JOIN tbl_user on tbl_usermessage.UserID = tbl_user.UserID WHERE MsgID = @Value1"; 
     using (DataServer server = new DataServer()) 
     { 
      MySqlParameter[] param = new MySqlParameter[1]; 
      param[0] = new MySqlParameter("@value1", MySqlDbType.Int32); 
      param[0].Value = MessageID; 
      command.Parameters.AddWithValue("@Value1", MessageID); 
      ds = server.ExecuteQuery(CommandType.Text, MysqlStatement, param); 
     } 

     Grid_UserTable.DataSource = ds; 
     Grid_UserTable.DataBind(); 

我将数据绑定到一个中继器列表,

string MysqlStatement = "SELECT Title, RespondBy, ExpiresBy, OwnerName, Concat(LowTarget,' - ',TopTarget) as Threshold FROM tbl_message WHERE MsgID = @Value1"; 
     using (DataServer server = new DataServer()) 
     { 
      MySqlParameter[] param = new MySqlParameter[1]; 
      param[0] = new MySqlParameter("@value1", MySqlDbType.Int32); 
      param[0].Value = MessageID; 
      command.Parameters.AddWithValue("@Value1", MessageID); 
      ds = server.ExecuteQuery(CommandType.Text, MysqlStatement, param); 
     } 
     rptList.DataSource = ds; 
     rptList.DataBind(); 

我有一个按钮,即可下载报表

protected void btn_ExcelDownload_Click(object sender, EventArgs e) 
    { 

     string path = Server.MapPath(""); 
     path = path + @"\Resources\MessageStatus.xlsx"; 
     string filename = Path.GetFileName(path); 


     Response.AppendHeader("content-disposition", "attachment; filename=" + filename); 
     Response.ContentType = "Application/msexcel"; 
     Response.WriteFile(path); 
     Response.End(); 

    } 

我试过几件事情,并设法请从Excel工作表按钮单击,但是如何填充中继器列表和网格视图中的所有数据。在帮助之前我没有这样做。

回答

1

样品的aspx:

<asp:Repeater ID="Repeater1" runat="server"> 
     <HeaderTemplate> 
      <table> 
       <thead> 
        <tr> 
         <th>Foo</th> 
         <th>Bar</th> 
        </tr> 
       </thead> 
     </HeaderTemplate> 
      <ItemTemplate> 
       <tr> 
        <td>Whatever <%# Container.DataItem %></td> 
        <td>Stuff <%# Container.DataItem %></td> 
       </tr> 
      </ItemTemplate> 
     <FooterTemplate> 
      </table> 
     </FooterTemplate> 
    </asp:Repeater> 

示例代码背后

protected void Button1_Click(object sender, EventArgs e) { 
      Repeater1.DataSource = Enumerable.Range(1, 10); 
      Repeater1.DataBind(); 
      StringBuilder sb = new StringBuilder(); 
      StringWriter sw = new StringWriter(sb); 
      HtmlTextWriter writer = new HtmlTextWriter(sw); 
      Repeater1.RenderControl(writer); 
      Response.Clear(); 
      Response.AppendHeader("content-disposition", "attachment; filename=foo.xlsx"); 
      Response.ContentType = "Application/msexcel"; 
      Response.Write(sb.ToString()); 
      Response.End(); 
     }