核心步驟:
AllowPaging = false) 重新繫結完整資料。Content-Type: application/vnd.xls、Content-Disposition: attachment;filename=Export.xls。HtmlTextWriter 將 GridView 渲染為 HTML 表格字串寫入 Response。protected void BtnExport_Click(object sender, EventArgs e) {
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Export.xls");
Response.Charset = "utf-8";
Response.ContentType = "application/vnd.xls";
using (StringWriter sw = new StringWriter()) {
using (HtmlTextWriter hw = new HtmlTextWriter(sw)) {
GridView1.AllowPaging = false;
BindData();
GridView1.RenderControl(hw);
Response.Write(sw.ToString());
}
}
Response.End();
GridView1.AllowPaging = true;
BindData();
}
public override void VerifyRenderingInServerForm(Control control) { } // 必須覆寫
ControlParameter 可繫結 GridView SelectedValue (第一個 DataKey) 或 SelectedDataKey.Values["欄位名"] 取得多鍵值。FormView 或 DataList 的 ItemTemplate 中,於 DataBound/ItemDataBound 事件動態設定從表 DataSource 參數值 (OrderID)。EmptyDataText/EmptyDataTemplate:無資料時顯示友善訊息。BoundField.NullDisplayText:欄位為 null 時顯示 "未列出" 等文字。ConvertEmptyStringToNull="true":使用者清空輸入視為 null 寫入資料庫。Parameter.DefaultValue + CancelSelectOnNullParameter="false":下拉選單「全部」選項傳空值時仍執行查詢 (配合 SQL WHERE col = ISNULL(@param, col))。