0

ホテルごとに10枚の画像を表示する必要がある100件のホテルのリストがあります。これには 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

テーブルであるデータリストコントロールの基本結果を利用してみませんか。これにより、データセットを最初から作成する必要がなくなります。ループは、SQLデータアダプターを使用してデータセットを埋めることに置き換えられます。ホテルIDと100のホテルそれぞれの10の画像のID値の関係を保持するテーブルを作成します。クエリで2つのテーブルを結合すると、結果のデータセットにより、画像がWebページに読み込まれるまでの待機時間が改善されます。私はこれをコード化するのに時間がかかることができません、私は私のAndroid携帯電話にいます。提案がお役に立てば幸いです。ADO.Netは、他の.Netデータプロトコルと同じくらい高速に動作しますが、多くの場合、より高速です。

于 2012-06-30T02:01:59.497 に答える