Девэкспресс Xtragrid TileView

Я использую модуль Devexpress Xtragrid TileView.

В основном я хочу, чтобы мой код работал так:

  1. пользователь вводит идентификатор участника в верхнем левом текстовом поле и нажимает нагрузку
  2. Если они существуют, то появится плитка.
  3. Плитка должна содержать: имя, статус, идентификатор участника и фотографию.
  4. Если пользователь снова нажмет загрузку (либо тот же идентификатор, либо другой идентификатор), будет также добавлен тайл и так далее. Если они не нажимают "Очистить и загрузить", должна остаться только 1 последняя плитка.

Итак, я могу произвести до шага 3. Но я не смог загрузить картинку.

Сама картинка, это не байтовый массив. Это путь к изображению. eq: D:/test/1.jpg

Итак, как мне загрузить картинку?

Protected Overridable Sub InitData()
    Try
        Dim homesTable = ds.Tables(0)
        homesTable.Columns.Add("ImageCol")

        For Each row_Renamed As DataRow In homesTable.Rows
            Dim img As Image = Image.FromFile(row_Renamed("memberPhoto")) 'I tried this, but didn't work
            row_Renamed("ImageCol") = img
        Next row_Renamed

        GridControl1.DataSource = homesTable
    Catch
    End Try
End Sub

Private Sub setupTile()
    'For i = 0 To j - 1
    Try
        TileView1.BeginUpdate()
        'TileView1.DataSource = ds.Tables(0)
        TileView1.OptionsTiles.RowCount = 3
        TileView1.OptionsTiles.Padding = New Padding(20)
        TileView1.OptionsTiles.ItemPadding = New Padding(10)
        TileView1.OptionsTiles.IndentBetweenItems = 20
        TileView1.OptionsTiles.ItemSize = New Size(320, 170)
        TileView1.Appearance.ItemNormal.ForeColor = Color.White
        TileView1.Appearance.ItemNormal.BorderColor = Color.Transparent
        'Setup tiles template
        Dim leftPanel As New TileViewItemElement()
        Dim splitLine As New TileViewItemElement()
        Dim nameCaption As New TileViewItemElement()
        Dim nameValue As New TileViewItemElement()
        Dim statusCaption As New TileViewItemElement()
        Dim statusValue As New TileViewItemElement()
        Dim RGPCaption As New TileViewItemElement()
        Dim RGPvalue As New TileViewItemElement()
        Dim imageTile As New TileViewItemElement()
        TileView1.TileTemplate.Add(leftPanel)
        TileView1.TileTemplate.Add(splitLine)
        TileView1.TileTemplate.Add(nameCaption)
        TileView1.TileTemplate.Add(nameValue)
        TileView1.TileTemplate.Add(statusCaption)
        TileView1.TileTemplate.Add(statusValue)
        TileView1.TileTemplate.Add(RGPCaption)
        TileView1.TileTemplate.Add(RGPvalue)
        TileView1.TileTemplate.Add(imageTile)
        '
        'nameValue.Text = ""
        'statusValue.Text = ""
        'RGPvalue.Text = ""
        'imageTile.Image = Nothing

        '
        leftPanel.StretchVertical = True
        leftPanel.Width = 190
        leftPanel.TextLocation = New Point(-10, 0)
        leftPanel.Appearance.Normal.BackColor = Color.FromArgb(58, 166, 101)
        '
        splitLine.StretchVertical = True
        splitLine.Width = 3
        splitLine.TextAlignment = TileItemContentAlignment.Manual
        splitLine.TextLocation = New Point(190, 0)
        splitLine.Appearance.Normal.BackColor = Color.White
        '
        nameCaption.Text = "Name"
        nameCaption.TextAlignment = TileItemContentAlignment.TopLeft
        nameCaption.Appearance.Normal.FontSizeDelta = -1
        '
        nameValue.Column = TileView1.Columns("preferredName")
        nameValue.AnchorElement = nameCaption
        nameValue.AnchorIndent = 2
        nameValue.MaxWidth = 200
        nameValue.Appearance.Normal.FontStyleDelta = FontStyle.Bold
        'nameValue.Text = ds.Tables(0).Rows(i)("preferredName").ToString
        '
        statusCaption.Text = "Status"
        statusCaption.AnchorElement = nameValue
        statusCaption.AnchorIndent = 14
        statusCaption.Appearance.Normal.FontSizeDelta = -1
        '
        statusValue.Column = TileView1.Columns("memberStatus")
        statusValue.AnchorElement = statusCaption
        statusValue.AnchorIndent = 2
        statusValue.Appearance.Normal.FontStyleDelta = FontStyle.Bold
        'statusValue.Text = ds.Tables(0).Rows(i)("memberStatus").ToString
        '
        RGPCaption.Text = "RGP"
        RGPCaption.AnchorElement = nameValue
        RGPCaption.AnchorIndent = 65
        'RGPCaption.TextLocation
        'RGPCaption.Appearance.Normal.FontSizeDelta = -1
        RGPCaption.Appearance.Normal.Font = New Font("Segoe UI Semibold", 12.0F, System.Drawing.FontStyle.Regular)
        '
        RGPvalue.Column = TileView1.Columns("code")
        RGPvalue.AnchorElement = RGPCaption
        RGPvalue.AnchorIndent = 1
        RGPvalue.TextAlignment = TileItemContentAlignment.BottomLeft
        RGPvalue.Appearance.Normal.Font = New Font("Segoe UI Semilight", 25.75F, System.Drawing.FontStyle.Regular)
        'RGPvalue.Text = ds.Tables(0).Rows(i)("code").ToString
        '
        imageTile.Column = TileView1.Columns("ImageCol")
        imageTile.ImageSize = New Size(120, 170)
        imageTile.ImageAlignment = TileItemContentAlignment.MiddleRight
        imageTile.ImageScaleMode = TileItemImageScaleMode.Stretch
        imageTile.ImageLocation = New Point(12, 0)

    Catch ex As Exception
        XtraMessageBox.Show(ex.Message)
    Finally
        TileView1.EndUpdate()
    End Try
    'Next


End Sub

Private Sub loadBtn_Click(sender As Object, e As EventArgs) Handles loadBtn.Click
        initData()
        setupTile()
End Sub

UI

1 ответ

Может быть, уже слишком поздно, но в моем случае нужно только прочитать файл с диска и присвоить столбцу byte().

Прежде всего, столбец таблицы должен быть байтовым массивом, поэтому замените:

homesTable.Columns.Add("ImageCol")

за:

homesTable.Columns.Add(New DataColumn("ImageCol", GetType(Byte)))

Тогда я бы попробовал заменить:

row_Renamed("ImageCol") = img

за:

row_Renamed("ImageCol") = IO.File.ReadAllBytes(row_Renamed("memberPhoto"))

Это загрузит файл диска в байтовый массив и будет показан в виде плитки. Я бы проверил, существует ли файл, чтобы избежать исключений.

Это то, что я делаю, чтобы загрузить образ с диска.

Надеюсь, поможет.

Другие вопросы по тегам