zoukankan
html css js c++ java
在asp.net2.0中使用GridView的RenderContro将GridView中数据l转换成EXCEL文件
在asp.net2.0中,控件的校验严格了,RenderControl代码只有走正常流程在render方法中它自己调用才能成功,在你自己写的事件方法中调用就会出现这个错误。这个错误信息有点误导,你明明写在服务器控件Form内,它照样会这样提醒你,实际上是asp.net2.0设置了内部变量控制RenderControl不允许在Render方法之外被轻易调用。
但只要稍做修改就可以实现在asp.net2.0中使用GridView的RenderContro将GridView中数据l转换成EXCEL文件的功能了。
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default.aspx.cs
"
Inherits
=
"
_Default
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
无标题页
</
title
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
asp:GridView
ID
="GridView1"
runat
="server"
>
</
asp:GridView
>
<
asp:Button
ID
="Button1"
runat
="server"
OnClick
="Button1_Click"
Text
="输出"
Width
="71px"
/>
</
div
>
</
form
>
</
body
>
</
html
>
注意最后两个函数
protected
void
Page_Load(
object
sender, EventArgs e)
{
//
在此处放置用户代码以初始化页面
if
(
!
Page.IsPostBack)
BindData();
}
/**/
///
<summary>
///
创建数据源
///
</summary>
///
<returns>
DataView
</returns>
ICollection CreateDataSource()
{
DataTable dt
=
new
DataTable();
DataRow dr;
dt.Columns.Add(
new
DataColumn(
"
身份证号码
"
,
typeof
(
string
)));
dt.Columns.Add(
new
DataColumn(
"
图书单价
"
,
typeof
(
decimal
)));
dt.Columns.Add(
new
DataColumn(
"
购买数量
"
,
typeof
(Int32)));
dt.Columns.Add(
new
DataColumn(
"
总价格
"
,
typeof
(
decimal
)));
for
(
int
i
=
0
; i
<
30
; i
++
)
{
dr
=
dt.NewRow();
dr[
0
]
=
"
123456789123456789
"
;
dr[
1
]
=
100
*
i
/
3.0
;
dr[
2
]
=
i
+
5
;
dr[
3
]
=
(
decimal
)dr[
1
]
*
(Int32)dr[
2
];
dt.Rows.Add(dr);
}
DataView dv
=
new
DataView(dt);
return
dv;
}
private
void
BindData()
{
GridView1.DataSource
=
CreateDataSource();
GridView1.DataBind();
}
protected
void
Button1_Click(
object
sender, EventArgs e)
{
Response.Clear();
Response.AddHeader(
"
content-disposition
"
,
"
attachment;filename=FileName.xls
"
);
Response.Charset
=
"
gb2312
"
;
Response.ContentType
=
"
application/vnd.xls
"
;
System.IO.StringWriter stringWrite
=
new
System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite
=
new
HtmlTextWriter(stringWrite);
GridView1.AllowPaging
=
false
;
BindData();
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
GridView1.AllowPaging
=
true
;
BindData();
}
public
override
void
VerifyRenderingInServerForm(Control control)
{
//
Confirms that an HtmlForm control is rendered for
}
protected
void
paging(
object
sender, GridViewPageEventArgs e)
{
GridView1.PageIndex
=
e.NewPageIndex;
BindData();
}
查看全文
相关阅读:
[JZOJ4648] 【NOIP2016提高A组模拟7.17】锦标赛
[JZOJ4684] 【GDOI2017模拟8.11】卡牌游戏
[JZOJ4649] 【NOIP2016提高A组模拟7.17】项链
[JZOJ4682] 【GDOI2017模拟8.11】生物学家
[JZOJ4639] 【NOIP2016提高组A组7.16】Angel Beats!
收藏一个bit模板使用实例
51 Nod 1627瞬间移动(插板法!)
收藏一个有效的求组合数的模板
51 Nod 1486 大大走格子
51nod 1120 机器人走方格V3
原文地址:https://www.cnblogs.com/always/p/555690.html
最新文章
CF230B T-primes 题解
CF1326C Permutation Partitions 题解
CF1326A Bad Ugly Numbers 题解
洛谷 P5176 公约数 题解
洛谷 P3935 Calculating 题解
我国的金融体系
金融市场
【bzoj题解】1001 狼抓兔子
【算法学习】网络流模板……
【算法学习】老算法,新姿势,STL——Heap
热门文章
【划水闲谈】Terraria 1.3.5更新
【洛谷】【洛谷月赛】4月月赛Round 1/2
【比赛题解】03-25生日赛
【洛谷】P1445 没占到1444的愤怒
NOIP 2016 迟来的满贯
[JZOJ4788] 【NOIP2016提高A组模拟9.17】序列
[JZOJ3168] 【GDOI2013模拟3】踢足球
[JZOJ4913] 【GDOI2017模拟12.3】告别
[JZOJ4633] 【GDOI2017模拟7.15】萌萌哒
[JZOJ4640] 【GDOI2017模拟7.15】妖怪
Copyright © 2011-2022 走看看