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();
}
查看全文
相关阅读:
python 下载文件保存到本地
python 模拟udp客户端发送报文
Block的底层代码实现
常见的崩溃问题和类型
NSTimer打破循环引用的几种方式
springcloud alibaba Nacos解决OpenFeign调用失败问题
LRU算法
常见算法题解
PHP无文件木马
c++各种类型的字节数
原文地址:https://www.cnblogs.com/always/p/555690.html
最新文章
shell脚本报错:.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
worksocket使用Nginx进行反向代理
SpringBoot整合websocket简单示例
Spring工具类 非spring管理环境中获取bean及环境配置
JAVA获取两个日期之间的所有日期
VScode 配置yapf格式化
接口测试
oracle控制用户权限命令
多线程中的双重检查锁
java.lang.reflect.InvocationTargetException
热门文章
阿里开源工作流框架 compileflow 上手使用
1、fastjson运用
【3】、 Json-lib 的使用
【2】、Gson基本用法
【1】、fastjson 的使用总结
MQTT介绍与使用
Redis 通过 scan 找出不过期的 key
MySQL Online DDL 原理
MongoDB 监控工具 mongostat
Linux truncate
Copyright © 2011-2022 走看看