我想導出數據到Excel。我有GridView與分頁啓用。當我使用HtmlTextWriter下載數據時,它只下載到GridView中的可見記錄。我們可以下載單個Excel文件中的所有記錄嗎?並且下載的數據應該和GridView中的排序狀態一樣?導出所有數據到Excel使用GridView與分頁啓用..在asp.net與c#
客戶端源代碼
<asp:GridView ID="gvDetailFleet" runat="server" DataSourceID="SqlDataSource2"
AllowPaging="false" AllowSorting="True" AutoGenerateColumns="true"
DataKeyNames="OracleId" CellPadding="4" ForeColor="#333333"
GridLines="None" >
<RowStyle BackColor="#EFF3FB" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
這裏是服務器端
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
public partial class FleetReportWithoutVehicle : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
btnFleetReportWithoutVehicle.Visible = false;
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
btnFleetReportWithoutVehicle.Visible = true;
}
protected void btnExportSalary_Click(object sender, EventArgs e)
{
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "AttendanceFollowUpReport.xls"));
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvDetailFleet.AllowPaging = false;
gvDetailFleet.HeaderRow.Style.Add("background-color", "");
for (int i = 0; i < gvDetailFleet.HeaderRow.Cells.Count; i++)
{
gvDetailFleet.HeaderRow.Cells[i].Style.Add("background-color", "");
}
gvDetailFleet.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
}
是的,你可以做到這一點,但需要從數據庫中再次獲取數據或禁用gridview pagind和刷新網格。我更好的做另一種方法從數據庫中獲取數據,然後構建excel。 –