为了解决迅雷下载出错的问题,必须要做出两个页面,一个页面用来进行传值,另一个页面接收值,然后进行对gridview列绑定
我的日志表中有四列,分别为:LogNo,UserName,DateTimes,Incident;转化成excel之后对应一列名为:日志编号,用户名,日期,事件;
以下代码为对gridview进行列名的动态改变。
bf1.HeaderText = "日志编号";
bf1.DataField = "LogNo";
bf2.HeaderText = "用户名";
bf2.DataField = "UserName";
bf3.HeaderText = "日期";
bf3.DataField = "DateTimes";
bf4.HeaderText = "事件";
bf4.DataField = "Incident";
第一个页面用来传值,在我这个例子中是传递三个值,username,stime,etime
以下代码放在点击触发事件里面:
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 = "日志编号";
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();
|
|