我有一个从另外系统获得的DataTable
分页时重新生成系统边的很慢!大家有没这样的方法:
1.首次打开页面,生成DataTable
在分页时,使用缓存后的数据[但是必须是当前页数据]2.每次只获得一页的DataTable,但是页导航要显示---
大家有这样的做法的麻烦告诉我一下。
上网不方便,今天务必要解决的
分页时重新生成系统边的很慢!大家有没这样的方法:
1.首次打开页面,生成DataTable
在分页时,使用缓存后的数据[但是必须是当前页数据]2.每次只获得一页的DataTable,但是页导航要显示---
大家有这样的做法的麻烦告诉我一下。
上网不方便,今天务必要解决的
解决方案 »
- 哪位前辈能详细的告诉我 Appliction Bolck 是什么意思?一般在什么情况下需要用??谢谢了
- <%# 如何在一个用户控件里面调用页面控件的过程 如:在A.ascx里面定义了搜索条件和按钮 当点击时让B.aspx里面的DataGrid按这个条件搜索
- 简单问题
- 请问各位大侠,生成预览的最好方法
- 请问高手asp中的session如何能传到asp.net中。并且不在一个站点或虚拟目录上可不可以呢。急啊。
- 新装的vs 2005 中在项目添加引用后,为什么出来的窗口只有两个按钮"确定"、"取消",没有引用项目的选择框?
- 今天面试遇到一个面试题treeView
- 在WebForm中的回车问题
- 高分救急呀~~~~~~~~ASP.net怎么调用远程SQL数据库~~~~~~~~~~~
- 链接的编码问题
- 一个简单的问题
- 关于取得DataList中的TextBox值的问题!
我的这个DataSet是从别的系统的对象模型中获取到的。
private DataSet ds()
{
//调用对象模型获取的DataSet
}private void BindGrid()
{
DataSet dss=new DataSet();
dss=ds();
DataGrid1.DataSource=dss;
DataGrid1.DataBind();
}//分页时会重新生成DataSet,并绑定数据,这样很慢
有什么好办法可以解决这个问题?
而且还会可以使翻页后继续维持第二页的排序,例如:显示学生成绩并从大到小排序
第一页显示了1~10条记录,那第二页应该显示11~12条记录,并维持排序
要想导航栏一直显示,必须得绑定所有的数据,除非自定义一个翻页控件.
我这里是用的DataGrid的翻页功能
第一次从数据库中取数据,并把DataSet和排序关键字一起保存在DataView中,以后都从DataView中取数据.并重新给DV.Sort赋值缓存保存中的排序表达式
然后,将this.DataGrid.CurrentPage = e.NewPage; 即可了就会实现:
第一页显示: 100,90,80,65;
翻页后,
第二页继续显示: 50,45,30,20了
因为从对象模型获取的是多个DataTable,我只能构建新的DataTable,过滤掉一些不需要的记录。排序,我也是用的ViewState.分页后排序也都没问题
现在的问题就是速度上不好。具体你是怎么做的,放点代码给我,谢谢了。
绑定时从ds取相应的记录.(可考虑把要显示的copy到一个临时的datatable中,然后绑定datagrid)
我 需要缓存到客户端,因为所取的DataSet是于当前登陆的域用户相关的
(
@PageIndex int,
@PageSize int,
@Order varchar(10) --空字符串表示顺序,'desc'表示逆序
)
asdeclare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound = @PageSize * @PageIndex
set @PageUpperBound = @PageLowerBound + @PageSize + 1create table #PageIndex
(
IndexId int identity (1, 1) not null,
fLinkID Int
)if(@Order='')
begin
insert into #PageIndex (fLinkID)
select fLinkID from bdAccVsCorps order by fLinkID
end
else
begin
insert into #PageIndex (fLinkID)
select fLinkID from bdAccVsCorps order by fLinkID desc
endselect count(fLinkID) from bdAccVsCorpsselect O.*
from bdAccVsCorps O,#PageIndex PageIndex
where O.fLinkID = PageIndex.fLinkID AND
PageIndex.IndexID > @PageLowerBound AND
PageIndex.IndexID < @PageUpperBound
order by PageIndex.IndexID
GO
declare @pageSize int --返回一页的记录数
declare @CurPage int --页号(第几页)0:第一页;-1最后一页。declare @Count int
declare @id intset @pageSize=10
set @CurPage =1--定位
if @CurPage = -1
begin
--最后一页
set rowcount @pageSize
select @id=newsID from newsTemp order by newsID
endif @CurPage > 0
begin
set @Count = @pageSize * (@CurPage -1) + 1
set rowcount @Count
select @id=newsID from newsTemp order by newsID desc
end--返回记录
set rowcount @pageSize
select * from newsTemp where newsID <=@id order by newsID descset rowcount 0
http://community.csdn.net/Expert/topic/4175/4175448.xml?temp=.9892847