3

ご迷惑をおかけして申し訳ありません。選択したフィールドをasp.netグリッドビューに表示しようとしています。グリッドビューで関連する画像を表示する必要がある「product_img」を除くすべてを表示できます。

画像コントロールの画像URLをコードに添付するとグリッドビューに問題が発生します-null'<%#"InsertProd.aspx.cs?path" %>'画像/壊れた画像リンクが表示されるため、機能しません。

dr.readのパスをgridviewのimageURLにバインドする方法は間違っていますか?コードビハインドページを以下のように編集し、aspxページを下部としてデザインしました。

デザイナーページのコードは、下にスクロールすると下にあります。ありがとうございました。

    protected void gvShowInsert_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("SELECT product_cakeName, product_price,      
        product_qty,product_desc,product_img FROM Tbl_Products", conn);

        conn.Open();

        SqlDataReader dr;
        dr = cmd.ExecuteReader();
        if(dr.Read())
        {
           //Context.Response.BinaryWrite((byte[])dr[dr.GetOrdinal("product_img")]);


          byte[] path = (byte[])dr["product_img"]; //read the path of image

        }//imageControl.ImageUrl = path; //set the path to image control


        gvShowInsert.DataSource = dr;
        gvShowInsert.DataBind();
        dr.Close();
        conn.Close();
    }

これは私のデザインaspxです:

<Columns>
   <asp:TemplateField HeaderText="cake-name">
       <ItemTemplate>
            <asp:Label ID="lblHeaderName"   
            runat="server"Text='<%#Eval("product_cakeName") %>'></asp:Label>    
       </ItemTemplate>
  </asp:TemplateField>
 <asp:TemplateField HeaderText="price">
   <ItemTemplate>
   <asp:Label ID="lblHeaderPrice" runat="server" Text='<%#Eval("product_price")  
           %>'></asp:Label>    
    </ItemTemplate>
 </asp:TemplateField>
 <asp:TemplateField HeaderText="qty">
 <ItemTemplate>
 <asp:Label ID="lblHeaderQty" runat="server" Text='<%#Eval("product_qty") %>'></asp:Label>    
 </ItemTemplate>
 </asp:TemplateField>
 <asp:TemplateField HeaderText="desc">
 <ItemTemplate>
 <asp:Label ID="lblHeaderDesc" runat="server" Text='<%#Eval("product_desc") %>'>
 </asp:Label>    
 </ItemTemplate>
 </asp:TemplateField>
 <asp:TemplateField HeaderText="img">
 <ItemTemplate>
<asp:Image ID="imageControl" runat="server" ImageUrl='<%#"InsertProd.aspx.cs?path" %>' >
</asp:Image>    
</ItemTemplate>
</asp:TemplateField>
</Columns>
4

2 に答える 2

3

画像パスまたは画像ファイル名がデータベースに保存されている場合、他のコントロールの値と同じように割り当ててみませんか? このような:

データベースにパス全体が保存されている場合は、次のようにします。

<asp:Image ID="imageControl" runat="server" ImageUrl='<%# Eval("product_img") %>'></asp:Image>

データベースにファイル名しかない場合は、次のようにします。

<asp:Image ID="imageControl" runat="server" ImageUrl='<%# String.Format("~/path/to/image/" + Eval("product_img")) %>'></asp:Image>

幸運を!

于 2012-02-20T00:56:32.060 に答える
0

ASP.NET イメージ サーバー コントロールの URL が必要なため、別の要求でイメージを提供する必要があります。ashx ハンドラーはそれに適しています。したがって、最初のSQL選択からバイナリイメージフィールドを削除してください。後でフェッチします。

最初のステップは、URL フォームの画像をレンダリングすることです。このテーブルには、product_cakeName だけでなく、次のような実際の ID があることを願っています。

<asp:Image ID="imageControl" runat="server" ImageUrl='ServeImage.ashx?cake=<%#Eval("product_cakeName") %>' >

次に、ServeImage.ashx を作成し、パラメータ「cake」で要求されたケーキのデータベースからバイナリ イメージ フィールドのみを選択して提供します (Request.OutputStream を設定するか、Request.BinaryWrite を使用します)。

ここに完全な例があります: http://www.shabdar.org/asp-net/81-display-images-in-gridview-from-database-in-aspnet.html

于 2012-02-20T01:07:58.390 に答える