EDN Admin
Well-known member
I try to retrieve images from a sql server database and after that showing them on a webpage. The searching part is OK, but the showing part does not work correctly, because the image is not showed within the page (<img>) but on a separate page. The
technique I use is one with building components.
On the webpage TestClass.aspx I have the following code:
<span style="font-size:small <span style="font-size:small
<pre class="prettyprint <form id="form1" runat="server
<asp:ObjectDataSource ID="srcDdlCoureur" runat="server" SelectMethod="Get_Renner" TypeName="TestInfo
</asp:ObjectDataSource>
<aspropDownList ID="ddlCoureur" runat="server" DataSourceID="srcDdlCoureur"
CssClass="DdlTwee" Font-Size="12px" DataValueField="ImageID" DataTextField="Coureur" AutoPostBack="false
<asp:ListItem Text="Kies een Coureur" Value="
</asp:ListItem>
</aspropDownList>
<!-- deel 3 button -->
<asp:Button ID="Button1" CssClass="Button" ToolTip="Selecteer Coureur" runat="server" Text="Selecteer" />
<br /><br />
<asp:ObjectDataSource ID="srcFoto" runat="server" SelectMethod="Get_Coureur_Foto" TypeName="TestInfo
<SelectParameters>
<asp:ControlParameter ControlID="ddlCoureur" DefaultValue="" Name="ImageID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
<!-- <img> moet aan een control worden gekoppeld, anders werkt de datasource niet -->
<
center>
<asp:FormView ID="frmFoto" CssClass="FormView" runat="server" DataSourceID="srcFoto" DataKeyNames="ImageID" Width="250px
<ItemTemplate>
<%
-- de oude methode werkt prima
<img src = "../../ShowImage.aspx?ImageID=<%#Eval("ImageID")%>" border="1" alt="Foto Coureur"/>--
%>
<%
-- de nieuwe methode werkt, maar laat een foto zien die het hele scherm beslaat, geen idee hoe dit komt --%>
<img src = "<%#Get_Image(Eval("ImageID")) %>" border="1" alt="Foto Coureur" />
</ItemTemplate>
</asp:FormView>
</center>
</form>[/code]
In the code behind the following code:
<pre class="prettyprint Imports Images
Imports System.Data.SqlClient
Imports System.Web.Configuration
Imports System.Data
Partial Class WielerDatabase_PalmaresCoureurs_TestClass
Inherits System.Web.UI.Page
Private objImage As Images
Function Get_Image(ByVal ImageID As Integer) As SqlDataReader
Dim Foto As SqlDataReader
objImage = New Images
Foto = objImage.DoGetImage(ImageID)
Return Foto
End Function
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If ddlCoureur.SelectedValue.Length = 0 Then
frmFoto.Visible = False
Else
frmFoto.Visible = True
End If
End Sub
End Class[/code]
So the function Get_Image calls DoGetImage() of the Image class. That class has the following code:
<pre class="prettyprint Public Function DoGetImage(ByVal ImageID As Integer) As SqlDataReader
de SQL-code
Dim strSQL As String
sqlString = "SELECT ImageID, Achternaam, ImageData FROM vwRenner_Foto WHERE ImageID=@ImageID"
Dim objConn As New SqlConnection(connString)
Dim objCommand As New SqlCommand(sqlString, objConn)
objCommand.Parameters.AddWithValue("@ImageID", ImageID)
Dim objReader As SqlDataReader
objConn.Open()
objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
objReader.Read()
afbeelding tonen
My.Response.ContentType = "image/jpeg"
My.Response.ContentType = "image/png" - zie lijst
My.Response.BinaryWrite(objReader("ImageData"))
My.Response.End()
Return (objReader)
afsluiten
objReader.Close()
End Function[/code]
All this code is working OK, but shows an image on a separate page instead of an image within the <img> tags. Can anyone tell me what could be the cause of this problem?
Thanks in advance.
Robert
<hr class="sig Robert
View the full article
technique I use is one with building components.
On the webpage TestClass.aspx I have the following code:
<span style="font-size:small <span style="font-size:small
<pre class="prettyprint <form id="form1" runat="server
<asp:ObjectDataSource ID="srcDdlCoureur" runat="server" SelectMethod="Get_Renner" TypeName="TestInfo
</asp:ObjectDataSource>
<aspropDownList ID="ddlCoureur" runat="server" DataSourceID="srcDdlCoureur"
CssClass="DdlTwee" Font-Size="12px" DataValueField="ImageID" DataTextField="Coureur" AutoPostBack="false
<asp:ListItem Text="Kies een Coureur" Value="
</asp:ListItem>
</aspropDownList>
<!-- deel 3 button -->
<asp:Button ID="Button1" CssClass="Button" ToolTip="Selecteer Coureur" runat="server" Text="Selecteer" />
<br /><br />
<asp:ObjectDataSource ID="srcFoto" runat="server" SelectMethod="Get_Coureur_Foto" TypeName="TestInfo
<SelectParameters>
<asp:ControlParameter ControlID="ddlCoureur" DefaultValue="" Name="ImageID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
<!-- <img> moet aan een control worden gekoppeld, anders werkt de datasource niet -->
<
center>
<asp:FormView ID="frmFoto" CssClass="FormView" runat="server" DataSourceID="srcFoto" DataKeyNames="ImageID" Width="250px
<ItemTemplate>
<%
-- de oude methode werkt prima
<img src = "../../ShowImage.aspx?ImageID=<%#Eval("ImageID")%>" border="1" alt="Foto Coureur"/>--
%>
<%
-- de nieuwe methode werkt, maar laat een foto zien die het hele scherm beslaat, geen idee hoe dit komt --%>
<img src = "<%#Get_Image(Eval("ImageID")) %>" border="1" alt="Foto Coureur" />
</ItemTemplate>
</asp:FormView>
</center>
</form>[/code]
In the code behind the following code:
<pre class="prettyprint Imports Images
Imports System.Data.SqlClient
Imports System.Web.Configuration
Imports System.Data
Partial Class WielerDatabase_PalmaresCoureurs_TestClass
Inherits System.Web.UI.Page
Private objImage As Images
Function Get_Image(ByVal ImageID As Integer) As SqlDataReader
Dim Foto As SqlDataReader
objImage = New Images
Foto = objImage.DoGetImage(ImageID)
Return Foto
End Function
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If ddlCoureur.SelectedValue.Length = 0 Then
frmFoto.Visible = False
Else
frmFoto.Visible = True
End If
End Sub
End Class[/code]
So the function Get_Image calls DoGetImage() of the Image class. That class has the following code:
<pre class="prettyprint Public Function DoGetImage(ByVal ImageID As Integer) As SqlDataReader
de SQL-code
Dim strSQL As String
sqlString = "SELECT ImageID, Achternaam, ImageData FROM vwRenner_Foto WHERE ImageID=@ImageID"
Dim objConn As New SqlConnection(connString)
Dim objCommand As New SqlCommand(sqlString, objConn)
objCommand.Parameters.AddWithValue("@ImageID", ImageID)
Dim objReader As SqlDataReader
objConn.Open()
objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
objReader.Read()
afbeelding tonen
My.Response.ContentType = "image/jpeg"
My.Response.ContentType = "image/png" - zie lijst
My.Response.BinaryWrite(objReader("ImageData"))
My.Response.End()
Return (objReader)
afsluiten
objReader.Close()
End Function[/code]
All this code is working OK, but shows an image on a separate page instead of an image within the <img> tags. Can anyone tell me what could be the cause of this problem?
Thanks in advance.
Robert
<hr class="sig Robert
View the full article