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();
}
查看全文
相关阅读:
[笔记]: 树链剖分 2017-06-05 16:57 35人阅读 评论(0) 收藏
[笔记]: 最小生成树Kruska 2017-06-05 16:52 34人阅读 评论(0) 收藏
[笔记]: 并查集 2017-06-05 16:49 58人阅读 评论(0) 收藏
[bzoj2144]: 跳跳棋 2017-06-02 15:53 42人阅读 评论(0) 收藏
[noip2013] 货车运输(最大生成树+并查集+LCA) 2017-06-02 15:18 56人阅读 评论(0) 收藏
[练习] LCA练习1(最基础) 2017-06-02 11:54 39人阅读 评论(0) 收藏
[笔记]: RMQ算法(区间查询) 2017-06-01 18:06 44人阅读 评论(0) 收藏
[笔记]: LCA最近公共祖先 2017-06-01 11:38 38人阅读 评论(0) 收藏
[hdu&poj&洛谷] 经典线段树练习题 2017-06-01 08:10 56人阅读 评论(0) 收藏
保留X位小数(Double) swift
原文地址:https://www.cnblogs.com/always/p/555690.html
最新文章
ORA-27092: size of file exceeds file size limit of the process
并发:OPP 响应超并发:OPP 响应超时
重启应用后出现“无效 无管理器”问题
EBS R12重启后无法进入登录页面
EBS密码安全的几个参数
EBS应用服务器启动指南
invalid END header (bad central directory offset) 异常解决方法
SimpleDateFormat做成员或者静态成员多线程安全隐患
从程序员到项目经理(5):程序员加油站 -- 不是人人都懂的学习要点
归并排序求逆序数
热门文章
DFS+枚举
1013. Battle Over Cities
1012. The Best Rank (25)
1010. Radix (25)(未完成)
1007. Maximum Subsequence Sum (25)
1006. Sign In and Sign Out (25)
1005. Spell It Right (20)
1004. Counting Leaves (30)
1003. Emergency (25)
[练习]:LCA练习2 2017-06-06 16:06 30人阅读 评论(0) 收藏
Copyright © 2011-2022 走看看