2012-02-19 3 views
3

Извините за беспокойство. Im пытается отобразить выбранные поля в gridview asp.net. я могу отображать все, кроме «product_img», где я должен отображать соответствующее изображение в gridview.GridView не может отображать изображение

Проблема в gridview, когда я подключил изображение URL-адреса управления изображением к коду-'<%#"InsertProd.aspx.cs?path" %>' не работает, поскольку он дает мне нулевые изображения/неработающее изображение.

- это мой метод привязки пути к dr.read к изображениюURL в gridview неправильно? Я отредактировал свой код за страницей, как показано ниже, и создадим страницу 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> 

ответ

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> 

удачи!

+0

Изображения сохраняются в базе данных, а не в файловой системе –

+0

Вам нужен обработчик см здесь: http://stackoverflow.com/questions/1738020/bytearray-to -image-asp-net – Ricketts

+0

спасибо, ребята! обработчик слишком много информации для меня, чтобы попробовать. таким образом, я попытаюсь присвоить значение прямо из БД, как было предложено выше. Спасибо всем за помощь, очень благодарен: D – jan

0

Вам нужен URL-адрес для управления ASP.NET Image Server, поэтому вам нужно подать изображение в другом запросе, для этого подходит обработчик ashx. Поэтому удалите поле бинарного изображения из начального sql-select, вы получите его позже.

Первый шаг, чтобы сделать форму URL изображения, надеюсь, что у вас есть реальный идентификатор в этой таблице, а не только product_cakeName, что-то вроде этого:

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

А затем создать ServeImage.ashx, выберите только бинарное поле изображения из базы данных для торта, которая была запрошена через параметр «торт», и обслуживать его (установите Request.OutputStream или используйте Request.BinaryWrite).

Вот полный пример: http://www.shabdar.org/asp-net/81-display-images-in-gridview-from-database-in-aspnet.html

+0

спасибо, плохо попробуй обработчик в ближайшее время. боюсь попробовать новые вещи, если они будут ввернуты. привет, брат, и спасибо: D – jan

Смежные вопросы