ASP.NET 分页GRIDVIEW 导出EXCEL的问题,情况比较特殊
页面上有几个按钮,功能分别不同,例如第一个是查询所有记录,第二个是查询本月记录,第三个是本周,第四个是自定义查询,包含很多条件。然后问题就是,我百度了很多,发现分页的Gr...
页面上有几个按钮,功能分别不同,例如第一个是查询所有记录,第二个是查询本月记录,第三个是本周,第四个是自定义查询,包含很多条件。
然后问题就是,我百度了很多,发现分页的Gridview要导出excel,都需要重新查询然后数据绑定一次,
那么,我如何重新查询?(不知道点了哪个按钮,执行了什么查询),我尝试过在页面加一个值,指示上一次进行了什么查询,但是这个值过了生存期会失效,应该说是一下子就没了,页面加载后就没了。
想过用缓存,但是具体不太懂,如果客户端同时打开多个页面进行不同的查询,如何保存多个缓存?缓存的生存期呢?
补充我现在是用表达式树来查询的,没有用到SQL
只有一个GetXXX的方法,里面很多参数。
获取所有就不填写参数
获取本月就是startDate: 2012-5-1 endDate: 2012-5-31
如果是自定义查询某个与某用户相关的信息就是: userId: 1001
然后这个方法根据传入的参数动态构建表达式树,然后执行where(expr.Compile()) 展开
然后问题就是,我百度了很多,发现分页的Gridview要导出excel,都需要重新查询然后数据绑定一次,
那么,我如何重新查询?(不知道点了哪个按钮,执行了什么查询),我尝试过在页面加一个值,指示上一次进行了什么查询,但是这个值过了生存期会失效,应该说是一下子就没了,页面加载后就没了。
想过用缓存,但是具体不太懂,如果客户端同时打开多个页面进行不同的查询,如何保存多个缓存?缓存的生存期呢?
补充我现在是用表达式树来查询的,没有用到SQL
只有一个GetXXX的方法,里面很多参数。
获取所有就不填写参数
获取本月就是startDate: 2012-5-1 endDate: 2012-5-31
如果是自定义查询某个与某用户相关的信息就是: userId: 1001
然后这个方法根据传入的参数动态构建表达式树,然后执行where(expr.Compile()) 展开
展开全部
1.看了其他人的回答。建议使用datatable。或集合实体类。
2.关于缓存和导出。缓存没必要用。Gridview的数据源建议使用分页查询语句去绑定。要导出的时候也就导出那几条数据。如果要导出所有数据也行。只要查询所有数据去导出。不去改变Gridview的数据源。只是单独的查询所有数据去导出。
2.关于缓存和导出。缓存没必要用。Gridview的数据源建议使用分页查询语句去绑定。要导出的时候也就导出那几条数据。如果要导出所有数据也行。只要查询所有数据去导出。不去改变Gridview的数据源。只是单独的查询所有数据去导出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次查询完毕你不是要GridView.DataSource=datatable么?再加条Session["table"]=datatable;这个值一直保存到客户页面关闭,调用出来DataTable dt=(DataTable)Session["table"];
更多追问追答
追问
这样好像会占服务器好多资源?session不是会话吗?只要客户端操作的间隔不超过默认的20分钟,会话就不会结束吧。。?那会一直占资源啊?。。。而且如果是多个页面同时打开的话,Session["table"]里面的数据不会错乱?
追答
多个页面打开那已经是不同的Session了,已经另外新建了对象了!如果你觉得占用资源,那不放datatable,放信号如查询的条件!
占用服务器资源的话那你就保存到用户页面上好了,在按钮按下去时先调用页面脚本保存到用户页面上,你说按下按钮页面会刷新导致信息会丢失,的确,你把会刷新的部分组进UpdatePanel里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个是查询所有记录的查询方法回调到你要导出的excel方法中重新绑定一次就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按钮都有对应的单击事件。这样就能区别点击的事什么查询了。我做过的是这样的。将数据导出Excel的方法单独拿出来。然后只要往方法里传DaTaSet就行了。每次查询的结果放到DaTaSet里。然后就可以直接将Dataset传到方法里。这样你就可以导出想要的
追问
DataSet存在哪里?缓存?多个同样的页面要如何缓存这个数据?如果数据量很大呢,要如何实现缓存的失效保证不浪费资源?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你也可以将你需要到处的格式指定,将Datatable到处Excel 。这个岂不是更方便,网上也有那种插件,Npoi。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询