首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少ItemDataBound事件时间

减少ItemDataBound事件时间
EN

Stack Overflow用户
提问于 2012-04-23 14:44:10
回答 1查看 550关注 0票数 0

我有一个100家酒店的列表,其中我必须显示每个酒店的10个图像。为此,我使用了DataList控件。由于我的图像存储在不同的表中,所以我每次都要在ItemDataBound事件中使用HotelId查询图像列表。但是每次调用存储过程都需要大约6秒的时间才能完成。因此,对于100行,它需要100*6秒,下面是我的代码

代码语言:javascript
复制
protected void dlSearchResult_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (ListItemType.Item == e.Item.ItemType || ListItemType.AlternatingItem == e.Item.ItemType)
        {
            HtmlGenericControl ul = (HtmlGenericControl)e.Item.FindControl("ulImages");
            DataSet dsImages = new DataSet();
            string HotelId=dlSearchResult.DataKeys[e.Item.ItemIndex].ToString();
            dsImages = SqlHelper.ExecuteDataset(Connection.ConnectionString, CommandType.StoredProcedure, "GetImage_ByHotelID", new SqlParameter("@HotelId", HotelId));

            StringBuilder  listtext=new StringBuilder ();

            if (dsImages.Tables.Count > 0)
            {
                for (int i = 0; i < dsImages.Tables[0].Rows.Count; i++)
                {
                    listtext.Append("<li class='PX_sri_photos_0'><a href='#'> <img  src='" + dsImages.Tables[0].Rows[i]["URL"].ToString() + "' alt='" + dsImages.Tables[0].Rows[i]["Caption"].ToString() + "' /></a></li>");
                }
            }
            ul.InnerHtml = listtext.ToString();


        }
    }

请给我优化代码的方向

EN

回答 1

Stack Overflow用户

发布于 2012-06-30 10:01:59

为什么不利用datalist控件的基本结果,它是一个表。这将避免从头开始构建数据集。循环被替换为使用sql数据适配器填充dataset。创建一个表,其中包含100个酒店的10个图像的酒店id和id值之间的关系。在查询中连接这两个表,生成的数据集应该会缩短图像加载到网页中的等待时间。我不能花时间编写代码,我正在用我的Android手机。希望这些建议能有所帮助。ADO.Net和其他.Net数据协议一样快,很多时候更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10275938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档