2011-09-23 44 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(); 
     }