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();
}
查看全文
相关阅读:
第三章预习
预习非数值数据的编码方式
预习原码补码
第三章——运算方法和运算部件预习
预习非数值数据的编码方式
预习原码补码(习题+预习)
预习非数值数据的编码方式
预习原码补码
10.21
10.7作业
原文地址:https://www.cnblogs.com/always/p/555690.html
最新文章
预习原码补码
Spring Boot 使用Mybatis拦截器结合Alibaba Druid解析SQL实现数据隔离
Spring cloud gateway 结合Nacos 总结
Spring cloud gateway 结合 sentinel 总结
Spring cloud gateway 使用总结
预习第三章
预习非数值数据的编码方式
预习原码补码
预习非数值数据的编码方式
预习原码补码
热门文章
预习第三章
预习非数值数据的编码方式
预习 原码补码 移码
奇矩阵(2020强智杯)
2020(2020强智杯)
D.String Commutativity(2020强智杯)
2020 vs 2018
机组第三章预习
非数值数据的编码方式
原码补码反码
Copyright © 2011-2022 走看看