سلام
اطلاعات مربوط به کالا و تصاویر آنها را در دیتابیس بصورت Image ذخیره می کنم و یه تابع دارم که این تصویر رو بازیابی میکنه و هرجا که بخوام نمایش بده
حالا می خوام از همین تابع استفاده کنم و توی Gridview نمایش بدم اما نمیشه
dim img As Image . . .دستورات sql و بازیابی اطلاعات از دیتابیس در datatable . . Dim bytes As Byte() = datatable.Rows(0)(img_colm_name) Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length) img.ImageUrl = Convert.ToString("data:image/png;base64,") & base64String
این لینک رو ببینید
با سلام
این روش رو توی همین سایت آموزش داده بودید و من دیدم
اما من اطلاعات ام رو توی data table ریختم و عنوان ستون ها رو به فارسی تغییر دادم و GridView من هیچ ستونی نداره و در کد نویسی فقط datatable بهش bind میشه . من میخواستم یه datafild از نوع image بسازم و imageurl اون رو با این تابع بدست بیارم و در GridView نمایش بدم
این تعریف gridview هستش <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Height="100%" Width="100%" Font-Names="Tahoma"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="False" ForeColor="White" Font-Names="Tahoma" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView>
GridView1.DataSource = datatable_temp
GridView1.DataBind()
جالبه که همه فیلد هارو نشون میده به غیر از image
شما تصویر را دربانک ذخیره کردید
چگونه میخواهید آدرس بدید وقتی روی مسیر فیزیکی نیست ؟
خب من در جاهای دیگه هم تصویر در مسیر فیزیکی نیست و تصویر رو از بانک بازیابی می کنم و از روش زیر نمایش می دم
Dim bytes As Byte() = datatable.Rows(0)(img_colm_name) Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length) img.ImageUrl = Convert.ToString("data:image/png;base64,") & base64String
توی کد شما برای نمایش تصویر به یک صفحه دیگه میره و از توی اون صفحه دوباره اطلاعاتی رو که یک بار آورده رو بازیابی می کنه و با شیء Response نمایش میده
خب نمیشه بجای کد زیر
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "Handler.ashx?Id="+ Eval("kala_id") %>' Height="150px" Width="150px" />
</ItemTemplate>
این رو در کد نویسی ایجاد کنیم و با کد زیر تصویر نشون بدیم
Dim bytes As Byte() = datatable.Rows(0)(img_colm_name) Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length) Image1.ImageUrl = Convert.ToString("data:image/png;base64,") & base64String
یه نگاهی به این لینک بندازید
http://www.beansoftware.com/ASP.NET-Tutorials/Images-Database.aspx
اینکار رو انجام دادم و تصویر رو نشون میده
اما همچنان من می خوام به روش زیر اینکار رو انجام بدم ولی نمایش نمیده............................باز هم تکرار میکنم که با روش زیر من تصویر رو در تگ img نمایش میدم و هیچ مشکلی هم نداره
. . . da.Fill(ds) ds.Tables(0).Columns.Add("imgFile") For Each tempRow As DataRow In ds.Tables(0).Rows bytes = tempRow.Item("kala_abad1") base64String = Convert.ToBase64String(bytes, 0, bytes.Length) tempRow.Item("imgFile") = (Convert.ToString("data:image/png;base64,") & base64String) Next
شما ابتدا باید تصویر را در مسیر فیزیکی ذخیره کنید و بعد آدرس تصویر را استفاده کنید
در کد های شما مستقیم بایند کردید
با سلام و تشکر
با کنترل DataList اینکار رو انجام دادم و هیچ مشکلی نداشت و به راحتی تصویر رو نمایش میده
تعریف DataList و قراردادن دو تا فیلد از نوع lable و image
CellPadding="0" GridLines="Both" Height="100%" Width="100%">
<HeaderTemplate>DataList Control</HeaderTemplate>
<HeaderStyle BackColor="Gray" Font-Bold="true" HorizontalAlign="Center" Font-Size="X-Large" />
<ItemTemplate>
<div>
<table style="width: 100%; text-align: center; border-color: red;">
<tr>
<td>
<asp:Image ID="img" runat="server" ImageUrl='<%#Eval("imgFile") %>' Width="30" Height="30" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("kala_code") %>'></asp:Label>
</td>
</tr>
</table>
</div>
</ItemTemplate>
در قسمت pageload همون دستورات قبل رو استفاده کردم
s) ds.Tables(0).Columns.Add("imgFile") For Each tempRow As DataRow In ds.Tables(0).Rows bytes = tempRow.Item("kala_abad1") base64String = Convert.ToBase64String(bytes, 0, bytes.Length) tempRow.Item("imgFile") = (Convert.ToString("data:image/png;base64,") & base64String) Next
DataList1.DataSource = ds
DataList1.DataBind()
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)