ASP.NET 分页GRIDVIEW 导出EXCEL的问题,情况比较特殊

页面上有几个按钮,功能分别不同,例如第一个是查询所有记录,第二个是查询本月记录,第三个是本周,第四个是自定义查询,包含很多条件。然后问题就是,我百度了很多,发现分页的Gr... 页面上有几个按钮,功能分别不同,例如第一个是查询所有记录,第二个是查询本月记录,第三个是本周,第四个是自定义查询,包含很多条件。

然后问题就是,我百度了很多,发现分页的Gridview要导出excel,都需要重新查询然后数据绑定一次,
那么,我如何重新查询?(不知道点了哪个按钮,执行了什么查询),我尝试过在页面加一个值,指示上一次进行了什么查询,但是这个值过了生存期会失效,应该说是一下子就没了,页面加载后就没了。
想过用缓存,但是具体不太懂,如果客户端同时打开多个页面进行不同的查询,如何保存多个缓存?缓存的生存期呢?
补充我现在是用表达式树来查询的,没有用到SQL
只有一个GetXXX的方法,里面很多参数。
获取所有就不填写参数
获取本月就是startDate: 2012-5-1 endDate: 2012-5-31
如果是自定义查询某个与某用户相关的信息就是: userId: 1001

然后这个方法根据传入的参数动态构建表达式树,然后执行where(expr.Compile())
展开
 我来答
q115860230
2012-05-16
知道答主
回答量:2
采纳率:0%
帮助的人:5.5万
展开全部
把表达式树保存到Session里面,键使用xxx + Page.GetHashCode(),这样可以保证每个页面的键都不一样,自定义xxx部分又可以保证不与其他Session冲突。之后将这个键保存到ViewState里面。
页面的HashCode在刷新页面后是会变的,而ViewState就不会,而且每个页面独立。
cold_xr
2012-05-16 · TA获得超过157个赞
知道答主
回答量:221
采纳率:0%
帮助的人:163万
展开全部
1.看了其他人的回答。建议使用datatable。或集合实体类。
2.关于缓存和导出。缓存没必要用。Gridview的数据源建议使用分页查询语句去绑定。要导出的时候也就导出那几条数据。如果要导出所有数据也行。只要查询所有数据去导出。不去改变Gridview的数据源。只是单独的查询所有数据去导出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blakli123
2012-05-16 · TA获得超过272个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:250万
展开全部
每次查询完毕你不是要GridView.DataSource=datatable么?再加条Session["table"]=datatable;这个值一直保存到客户页面关闭,调用出来DataTable dt=(DataTable)Session["table"];
更多追问追答
追问
这样好像会占服务器好多资源?session不是会话吗?只要客户端操作的间隔不超过默认的20分钟,会话就不会结束吧。。?那会一直占资源啊?。。。而且如果是多个页面同时打开的话,Session["table"]里面的数据不会错乱?
追答
多个页面打开那已经是不同的Session了,已经另外新建了对象了!如果你觉得占用资源,那不放datatable,放信号如查询的条件!
占用服务器资源的话那你就保存到用户页面上好了,在按钮按下去时先调用页面脚本保存到用户页面上,你说按下按钮页面会刷新导致信息会丢失,的确,你把会刷新的部分组进UpdatePanel里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e4cc0a88c
2012-05-16 · 超过20用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:42.2万
展开全部
第一个是查询所有记录的查询方法回调到你要导出的excel方法中重新绑定一次就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qianxun0928
2012-05-16
知道答主
回答量:36
采纳率:0%
帮助的人:7.9万
展开全部
按钮都有对应的单击事件。这样就能区别点击的事什么查询了。我做过的是这样的。将数据导出Excel的方法单独拿出来。然后只要往方法里传DaTaSet就行了。每次查询的结果放到DaTaSet里。然后就可以直接将Dataset传到方法里。这样你就可以导出想要的
追问
DataSet存在哪里?缓存?多个同样的页面要如何缓存这个数据?如果数据量很大呢,要如何实现缓存的失效保证不浪费资源?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
为客宾朋A
2012-05-16
知道答主
回答量:97
采纳率:0%
帮助的人:27.5万
展开全部
你也可以将你需要到处的格式指定,将Datatable到处Excel 。这个岂不是更方便,网上也有那种插件,Npoi。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式