0

C#.net を使用してデータベースからデータを取得し、Foreach ループを使用してページに表示しようとしています。コードを実行するたびに、DB に少なくとも 7 つのアイテムがあることがわかっている場合に表示されるアイテムは 1 つだけです。私はC#用に以下のコードを配置しました。

SqlConnection oConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["HomeGrownEnergyConnectionString"].ToString());
    string sqlEnergy = "Select * from Product p where p.ProductTypeId=3";
    SqlCommand oCmd = new SqlCommand(sqlEnergy, oConnection);
    DataTable dtenergy = new DataTable();
    SqlDataAdapter oDa = new SqlDataAdapter(oCmd);
    try
    {
        oConnection.Open(); ;
        oDa.Fill(dtenergy);
    }
    catch (Exception ex)
    {
        lblnodata.Text = ex.Message;
        return;
    }
    finally
    {
        oConnection.Close();
    }
    DataTableReader results = dtenergy.CreateDataReader();

    if (results.HasRows)
    {
        results.Read();
        foreach(DataRow result in dtenergy.Rows)
        {
            byte[] imgProd = result["ThumnailLocation"] as byte[];
            ID.Text = result["ProductID"].ToString();
            Name.Text = result["Name"].ToString();
            price.Text = FormatPriceColumn(result["Price"].ToString());


        }
    }

asp.net のコードは次のとおりです。

<div>
<asp:Image ID="imgProd" CssClass="ProdImg" runat="server" />
<asp:Label runat="server" ID="ID"  />
<asp:Label runat="server" ID="Name" />
<asp:Label runat="server" ID="price" />
<asp:TextBox ID="txtQty" MaxLength="3" runat="server" Width="30px" />
<asp:Button runat="server" ID="Addtocart" Text="Add To Cart" CommandName="AddToCart" ItemStyle-CssClass="btnCol" />

誰かが私を助けてくれれば、それはとてもありがたいことです。

4

2 に答える 2

1

データベースの画像列タイプを byte[] に設定し、この tow メソッドを使用して画像を取得および設定する必要があります。

public BitmapImage ImageFromBuffer(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.StreamSource = stream;
    image.EndInit();
    return image;
}

public Byte[] BufferFromImage(BitmapImage imageSource)
{
    Stream stream = imageSource.StreamSource;
    Byte[] buffer = null;
    if (stream != null && stream.Length > 0)
        {
            using (BinaryReader br = new BinaryReader(stream))
                {
                    buffer = br.ReadBytes((Int32)stream.Length);
                }
        }

    return buffer;
}
于 2012-11-25T16:58:33.600 に答える
0

あなたの質問のタイトルは、「自分のページにデータベースの結果セットを表示するにはどうすればよいですか」のようなものにすべきだと思います。

答えは、これにはデータバインディングを使用する必要があるということです。このようにして、データ項目がページ上でどのように表示されるかを設定できます。次に、一連のレコード/オブジェクトをこのリスト (レイアウトを使用) にスローすると、それらはすべてレイアウトで定義されたとおりにレンダリングされます。

以下に小さな例を示します。

あなたのaspxコードで:

<asp:DataList id="dlItems" runat="server">
         <ItemTemplate>
            <%# Eval("ID") %>
            <%# Eval("Name") %>
            <%# Eval("price") %>
         </ItemTemplate>
</asp:DataList>

あなたのcsコードで:

dlItems.DataSource = dtenergy;
dlItems.DataBind();

質問の画像部分については、次のような他のスレッドを参照してください: C# を使用して ASP.net のデータベースから画像を表示する

データ バインディングの詳細については、http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspxを参照してください。

于 2012-11-25T16:56:43.950 に答える