為了解決迅雷下載出錯(cuò)的問題,必須要做出兩個(gè)頁面,一個(gè)頁面用來進(jìn)行傳值,另一個(gè)頁面接收值,然后進(jìn)行對(duì)gridview列綁定
我的日志表中有四列,分別為:LogNo,UserName,DateTimes,Incident;轉(zhuǎn)化成excel之后對(duì)應(yīng)一列名為:日志編號(hào),用戶名,日期,事件;
以下代碼為對(duì)gridview進(jìn)行列名的動(dòng)態(tài)改變。
bf1.HeaderText = "日志編號(hào)";
bf1.DataField = "LogNo";
bf2.HeaderText = "用戶名";
bf2.DataField = "UserName";
bf3.HeaderText = "日期";
bf3.DataField = "DateTimes";
bf4.HeaderText = "事件";
bf4.DataField = "Incident";
第一個(gè)頁面用來傳值,在我這個(gè)例子中是傳遞三個(gè)值,username,stime,etime
以下代碼放在點(diǎn)擊觸發(fā)事件里面:
string username = tbUserName.Text;
string stime = hideStart.Value;
string etime = hideEnd.Value;
string str = "username=" + username + "&stime=" + stime + "&etime=" + etime;
Response.Redirect("BackLogDown.aspx?" + str);
以下代碼放在用來接收值的頁面BackLogDown.aspx的page_load里面
string username = Request.QueryString["username"];
string stime = Request.QueryString["stime"];
string etime = Request.QueryString["etime"];
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
if (!string.IsNullOrEmpty(stime))
{
startTime = DateTime.Parse(stime);
}
if (!string.IsNullOrEmpty(etime))
{
endTime = DateTime.Parse(etime);
}
BLL.BackChangeBLL bll = new BackChangeBLL();
List<Log> log = new List<Log>();
log = bll.bllQueryLogAll(username, startTime, endTime);
GridView dgv = new GridView();
BoundField bf1 = new BoundField();
BoundField bf2 = new BoundField();
BoundField bf3 = new BoundField();
BoundField bf4 = new BoundField();
bf1.HeaderText = "日志編號(hào)";
bf1.DataField = "LogNo";
bf2.HeaderText = "用戶名";
bf2.DataField = "UserName";
bf3.HeaderText = "日期";
bf3.DataField = "DateTimes";
bf4.HeaderText = "事件";
bf4.DataField = "Incident";
dgv.Columns.Add(bf1);
dgv.Columns.Add(bf2);
dgv.Columns.Add(bf3);
dgv.Columns.Add(bf4);
dgv.AutoGenerateColumns = false;
dgv.DataSource = log;
dgv.DataBind();
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
string filename = "日志表";
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + ".xls", System.Text.Encoding.UTF8));
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
this.EnableViewState = false;
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
dgv.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();