0

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

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();


        }
    }

请给我指导以优化我的代码

4

1 回答 1

0

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

于 2012-06-30T02:01:59.497 回答