Привязка двоичного файла к изображению в ASPxCardView, который находится в Datalist - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь привязать двоичное изображение из моей БД к программе просмотра изображений 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
...