外网访问 DataGrid 翻页很慢

xzg1109 2008-11-19 08:43:31
本人用DataGrid绑定数据,每页30条记录。有90页记录。数据库为Oracle10g.
内网访问很快。可是外网访问就很慢了,每翻一页大概要1分20秒。请问这种情况,有什么解决方法没有?拜谢!拜谢!
...全文
131 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangping_li 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 xzg1109 的帖子:]
本人用DataGrid绑定数据,每页30条记录。有90页记录。数据库为Oracle10g.
内网访问很快。可是外网访问就很慢了,每翻一页大概要1分20秒。请问这种情况,有什么解决方法没有?拜谢!拜谢!
[/Quote]
照这样来看不可能是分页问题
哪怕你用它自带的分页也不可能这么慢的,估计是带宽的问题
  • 打赏
  • 举报
回复
建议你每次回传都去查数据吧,不要放到viewstate里去。
xzg1109 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tmxk2002 的回复:]
引用 9 楼 xzg1109 的回复:
引用 7 楼 tmxk2002 的回复:
呵呵,不是分页的问题
你把你的页面右击选择属性,看看你的页面有多大?
你外网的带宽是多是,应该是页面太大,网络带宽不宽导致的。



是这个原因,所以不能用DataGrid本身的分页功能了。


天啦,你是不是把数据源放到viewstate保存到页面上了?????
如果这样你干嘛不每次去查下数据库而不要保存数据,这样还快些。
[/Quote]

是ViewState闹的。谢谢!
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xzg1109 的回复:]
引用 7 楼 tmxk2002 的回复:
呵呵,不是分页的问题
你把你的页面右击选择属性,看看你的页面有多大?
你外网的带宽是多是,应该是页面太大,网络带宽不宽导致的。



是这个原因,所以不能用DataGrid本身的分页功能了。
[/Quote]

天啦,你是不是把数据源放到viewstate保存到页面上了?????
如果这样你干嘛不每次去查下数据库而不要保存数据,这样还快些。
xzg1109 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qinhl99 的回复:]
请参考:

private void Page_Load(object sender, System.EventArgs e)
{
//页面初试化时进行数据绑定
if(!IsPostBack)
DataListDataBind();
}
private void DataListDataBind()
{
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
//创建数据适配器对象
SqlDataAd…
[/Quote]

我试一下。加四个按钮也可以。能解决立马结帖!
qinhl99 2008-11-19
  • 打赏
  • 举报
回复
90页数据,都是要下载到本地的,所以慢!
xzg1109 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tmxk2002 的回复:]
呵呵,不是分页的问题
你把你的页面右击选择属性,看看你的页面有多大?
你外网的带宽是多是,应该是页面太大,网络带宽不宽导致的。
[/Quote]


是这个原因,所以不能用DataGrid本身的分页功能了。
xzg1109 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qinhl99 的回复:]
请参考:

private void Page_Load(object sender, System.EventArgs e)
{
//页面初试化时进行数据绑定
if(!IsPostBack)
DataListDataBind();
}
private void DataListDataBind()
{
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
//创建数据适配器对象
SqlDataAd…
[/Quote]

这样是不是就不能用DataGrid本身的分页功能了。
  • 打赏
  • 举报
回复
呵呵,不是分页的问题
你把你的页面右击选择属性,看看你的页面有多大?
你外网的带宽是多是,应该是页面太大,网络带宽不宽导致的。
warrior 2008-11-19
  • 打赏
  • 举报
回复
内网快外网慢,是不是网速影响啊?
可能影响速度的有几个方面:
1.客户端处理速度
2.数据库查询速度
3.网络传输速度

1,2都不会导致内外网差别,那只有3了。

分析一下每次翻页时从数据库传输的数据量有多大,看能不能进一步优化。如果数据量不算大,而网速又不能改进,就只能采取后台预读等方法,在用户浏览的同时通过后台线程不断地从数据库取后续的数据。
怫悰 2008-11-19
  • 打赏
  • 举报
回复
冒泡帮顶接分

这个和网站本身有关系?mark学习
qinhl99 2008-11-19
  • 打赏
  • 举报
回复
请参考:

private void Page_Load(object sender, System.EventArgs e)
{
//页面初试化时进行数据绑定
if(!IsPostBack)
DataListDataBind();
}
private void DataListDataBind()
{
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
//创建数据适配器对象
SqlDataAdapter da = new SqlDataAdapter("select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy from Employees",conn);
//创建DataSet对象
DataSet ds = new DataSet();
try
{
//填充数据集
da.Fill(ds,"testTable");
//创建分页类
PagedDataSource objPage = new PagedDataSource();
//设置数据源
objPage.DataSource = ds.Tables["testTable"].DefaultView;
//允许分页
objPage.AllowPaging = true;
//设置每页显示的项数
objPage.PageSize = 5;
//定义变量用来保存当前页索引
int CurPage;
//判断是否具有页面跳转的请求
if (Request.QueryString["Page"] != null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;
//设置当前页的索引
objPage.CurrentPageIndex = CurPage-1;
//显示状态信息
lblCurPage.Text = "当前页:第" + CurPage.ToString()+"页";
//如果当前页面不是首页
if (!objPage.IsFirstPage)
//定义"上一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);
//如果当前页面不是最后一页
if (!objPage.IsLastPage)
//定义"下一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1);

//进行数据绑定
dlPager.DataSource = objPage;
dlPager.DataBind();
}
catch(Exception error)
{
//输出异常信息
Response.Write(error.ToString());
}
}

qinhl99 2008-11-19
  • 打赏
  • 举报
回复
可以的
xzg1109 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qinhl99 的回复:]
分页啊,不要用内存分页
[/Quote]

用要SQL语句能不能做到分页,如果这样的话,是不是要加上一面,下一页,首页,末页 四个按钮啊
qinhl99 2008-11-19
  • 打赏
  • 举报
回复
分页啊,不要用内存分页

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧