datalist嵌套gridview显示数据慢 应该如何优化???

apple130 2010-05-17 10:07:08


//这是个机票查询的效果
//datalist显示的航空公司信息
//gridview显示的是舱位信息和价格

DataSet ds = Common.DL_fly(StartCity, ArriveCity, StartDate, ArriveDate);//调用接口查询
dlFlight.DataSource = ds.Tables[0]; //datalist
dlFlight.DataBind();
for (int i = 0, j = dlFlight.Items.Count; i < j; i++)
{
GridView dl = (GridView)dlFlight.Items[i].FindControl("GridView2");
Label lb = (Label)dlFlight.Items[i].FindControl("lblLineNum"); // 航空公司对应的ID
dl.DataSource = Common.getDataTable(ds, lb.Text); //gridview
dl.DataBind();
}
//已经测试过调用接口速度不慢 主要慢在给datalist 和gridview 绑定数据源的时候慢。

//gridview 绑定的数据源
public static List<AvailablePrice> getDataTable(DataSet ds, string str)
{
List<AvailablePrice> lst = new List<AvailablePrice>();
DataRow[] dr = ds.Tables[1].Select("LineNum = '" + str + "'"); //根据航空公司对应的ID查询对应的舱位信息
AvailablePrice availablePrice = null;
foreach (DataRow row in dr)
{
availablePrice = new AvailablePrice();
availablePrice.LineNum = row["LineNum"].ToString();
availablePrice.AirLine = row["AirLine"].ToString();
availablePrice.Cabin = CabinManager.GetCabinByCabincode(row["AirLine"].ToString(), row["Cabin"].ToString());
availablePrice.ReturnLimit = row["ReturnLimit"].ToString();
availablePrice.ChangeLimit = row["ChangeLimit"].ToString();
availablePrice.SinglePrice = row["SinglePrice"].ToString();
availablePrice.FuelTax = row["FuelTax"].ToString();
availablePrice.AirPortTax = row["AirPortTax"].ToString();
availablePrice.DisCount = row["DisCount"].ToString();
lst.Add(availablePrice);
}
return lst;
}


//不知道该怎么优化了 查询速度太慢了 差不多得1分钟才能显示 不知道如何优化?
...全文
238 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
netzhouxg 2010-10-09
  • 打赏
  • 举报
回复
程序里少用循环
你可以返回Dataset啊
周公 2010-05-17
  • 打赏
  • 举报
回复
如果你真想优化的话,你应该想想是否真有有必要这样做?是否有滥用服务器控件的做法?
apple130 2010-05-17
  • 打赏
  • 举报
回复
ltcszk 2010-05-17
  • 打赏
  • 举报
回复
DataRow[] dr = ds.Tables[1].Select("LineNum = '" + str + "'"); //根据航空公司对应的ID查询对应的舱位信息

你gridview里的数据是repeater每条绑定时才去数据库里取出来。
这样等于要访问数据库很多次,自然会很慢。

你可以一次性把数据全取出来后,放在容器里,等绑定时再一一配对
zhoulingsmile 2010-05-17
  • 打赏
  • 举报
回复
程序里少用循环
你可以返回Dataset啊,它不占服务器资源
在内存中,可以返回一张或多张表的数据,改了应该也会快些的。。
你试试看喽。。。呵呵,加油。。
jianshao810 2010-05-17
  • 打赏
  • 举报
回复
换Repeater显示吧,比GridView轻量级,也许会好点。还有就是SQL语句查询记录不要是select * 这样的,把需要的字段在select 后面写出来.
jackwuzhidong 2010-05-17
  • 打赏
  • 举报
回复
把查询改成用存储过程呢,程序里少用循环就快了
lovejielun 2010-05-17
  • 打赏
  • 举报
回复
我也遇到过这种情况 你是否查询的数据量过大呢 有试过用页面缓存吗?
天神镜心 2010-05-17
  • 打赏
  • 举报
回复
像这样的问题 应该每测试一下每个程序段的时间


DateTime startTime=DateTime.Now;

测试程序块


DateTime endTime=DateTime.Now;
Console.WriteLine("程序运行的时间是:{0}",(endTime-startTime));

测试一下时间到底花在哪


然后再重点看一下 花时间最长的那个程序段!
天下在我心 2010-05-17
  • 打赏
  • 举报
回复
换Repeater显示吧,比GridView轻量级,也许会好点。还有就是SQL语句查询记录不要是select * 这样的,把需要的字段在select 后面写出来.
imfor 2010-05-17
  • 打赏
  • 举报
回复
把grid换成repeater
a124819202 2010-05-17
  • 打赏
  • 举报
回复
apple MM!
apple130 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhoufoxcn 的回复:]
如果你真想优化的话,你应该想想是否真有有必要这样做?是否有滥用服务器控件的做法?
[/Quote]

是否有滥用服务器控件的做法?
不用datalist或gridview 显示?

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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