Привязка двоичного файла к изображению в ASPxCardView, который находится в Datalist
Я пытаюсь привязать двоичное изображение из моей БД к программе просмотра изображений devexpress с помощью Eval,
Я связал некоторые данные, используя t1, t2 и t3, как показано ниже, они отображают данные, однако для фотографии двоичные изображения не отображаются.
Читатель возвращает байтовый массив при отладке, поэтому возвращается фактическое изображение.
Я считаю, что изображение не появляется из-за привязки самого элемента управления с использованием EVAL вместо кода позади
я пробовал другие элементы управления изображениями, такие как aspximagezoom, однако изображения по-прежнему не отображаются, я могу заставить изображение отображаться на стороне сервера, используя источник данных для привязки изображения, но в этом случае я не смог связать просмотр карты с использованием источника данных, как в списке данных,
ниже мой код на стороне asp и vb моих текущих реализаций.
Я неправильно связываю двоичное изображение?
ASP:
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" DataKeyField="-">
<ItemTemplate>
<dx:ASPxCardView ID="ASPxCardView1" runat="server" AutoGenerateColumns="False" ClientInstanceName="cardview1" KeyFieldName="-">
<SettingsExport ExportSelectedCardsOnly="False">
</SettingsExport>
<Columns>
<dx:CardViewTextColumn Caption="" Name="-" VisibleIndex="0">
</dx:CardViewTextColumn>
</Columns>
<Templates>
<Card>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table>
<tr>
<td></td>
<td>
<dx:ASPxBinaryImage ID="ASPxBinaryImage1" runat="server" ImageContentBytes='<%# Eval("Photo") %>'></dx:ASPxBinaryImage>
</td>
</tr>
<tr>
<td>
<dx:ASPxLabel runat="server" Text='<%# Eval("t1") %>' />
</td>
<td></td>
</tr>
<tr>
<td>
t2
</td>
<td>
<dx:ASPxLabel runat="server" Text='<%# Eval("t2") %>' />
</td>
</tr>
<tr>
<td>
t3
</td>
<td>
<dx:ASPxLabel runat="server" Text='<%# Eval("t3") %>' />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</Card>
</Templates>
<EditFormLayoutProperties ColCount="1">
</EditFormLayoutProperties>
<CardLayoutProperties ColCount="1">
<Items>
<dx:CardViewCommandLayoutItem ColSpan="1" HorizontalAlign="Right" ShowSelectCheckbox="True">
</dx:CardViewCommandLayoutItem>
<dx:CardViewColumnLayoutItem ColSpan="1" ColumnName="-">
</dx:CardViewColumnLayoutItem>
<dx:EditModeCommandLayoutItem ColSpan="1" HorizontalAlign="Right">
</dx:EditModeCommandLayoutItem>
</Items>
</CardLayoutProperties>
<StylesExport>
<Card BorderSides="All" BorderSize="1">
</Card>
<Group BorderSides="All" BorderSize="1">
</Group>
<TabbedGroup BorderSides="All" BorderSize="1">
</TabbedGroup>
<Tab BorderSize="1">
</Tab>
</StylesExport>
</dx:ASPxCardView>
</ItemTemplate>
</asp:DataList>
VB:
Private Shared Sub BindCardView(ByVal cdv As ASPxCardView, ByVal - As Integer)
Dim cardsource As DataTable = New DataTable("cardviewdt")
cardsource.Columns.Add("id")
cardsource.Columns.Add("t1")
cardsource.Columns.Add("t2")
cardsource.Columns.Add("t3")
cardsource.Columns.Add("Photo", GetType(Byte()))
Dim strConnectionString As String = ConfigurationManager.ConnectionStrings("-").ConnectionString
Dim conn As SqlConnection = New SqlConnection(strConnectionString)
Dim query As String =
"SELECT id, t1, t2, t3, Photo
FROM (-) INNER JOIN - ON -
WHERE -=@-"
Using cmd As SqlCommand = New SqlCommand(query, conn)
conn.Open()
cmd.Parameters.AddWithValue("@-", -)
Dim reader As SqlDataReader = cmd.ExecuteReader()
While reader.Read()
Dim bytes As Byte() = New Byte() {}
If Not Convert.IsDBNull(reader(10)) Then
bytes = CType(reader(10), Byte())
End If
cardsource.Rows.Add(CType(reader(0).ToString(), Int32), reader(1).ToString(), reader(2).ToString(3), bytes)
End While
conn.Close()
End Using
cdv.DataSource = cardsource
cdv.DataBind()
End Sub