GridView的RenderControl方法可以用來獲取控件輸出的HTML。下面是一個示例代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 綁定數據到GridView
BindData();
}
}
protected void btnExport_Click(object sender, EventArgs e)
{
// 獲取GridView的輸出HTML
string html = GetGridViewHtml(gvData);
// 導出HTML到文件
ExportHtmlToFile(html);
}
private void BindData()
{
// 假設從數據庫獲取數據
List<Person> persons = GetPersonsFromDatabase();
// 綁定數據到GridView
gvData.DataSource = persons;
gvData.DataBind();
}
private string GetGridViewHtml(GridView gv)
{
// 創建一個StringBuilder對象
StringBuilder sb = new StringBuilder();
// 創建一個StringWriter對象,用于寫入StringBuilder
StringWriter sw = new StringWriter(sb);
// 創建一個HtmlTextWriter對象,用于將GridView的輸出寫入StringWriter
HtmlTextWriter htw = new HtmlTextWriter(sw);
// 設置GridView的樣式
gv.Style.Add("font-size", "12px");
gv.Style.Add("text-align", "center");
// 渲染GridView的輸出
gv.RenderControl(htw);
// 返回GridView的輸出HTML
return sb.ToString();
}
private void ExportHtmlToFile(string html)
{
// 設置文件保存路徑
string filePath = Server.MapPath("~/ExportedHtml.html");
// 將HTML寫入文件
File.WriteAllText(filePath, html);
Response.Write("導出成功!");
}
// 重寫VerifyRenderingInServerForm方法,以便能夠正確渲染GridView
public override void VerifyRenderingInServerForm(Control control)
{
// 不執行任何操作
}
在上面的示例代碼中,先綁定數據到GridView,并在點擊導出按鈕時調用GetGridViewHtml方法獲取GridView的輸出HTML。然后,調用ExportHtmlToFile方法將HTML寫入文件。在GetGridViewHtml方法中,創建了一個StringBuilder對象和一個StringWriter對象,并將HtmlTextWriter對象的輸出寫入StringBuilder。最后,重寫了VerifyRenderingInServerForm方法,以確保能正確渲染GridView。