【问题标题】:Devexpress Xtragrid TileViewDevexpress Xtragrid TileView
【发布时间】:2017-01-07 14:26:55
【问题描述】:

我正在使用 Devexpress Xtragrid TileView 模块。

基本上我希望我的代码像这样工作:

  1. 用户在左上角的文本框中输入成员 ID,然后按加载。
  2. 如果它们存在,则会出现一个 Tile。
  3. 磁贴应包含:姓名、状态、会员 ID 和照片。
  4. 如果用户再次按下加载(相同的 ID 或另一个 ID),也会添加一个 Tile,依此类推。除非他们按 Clear & Load,否则它应该只剩下 1 个最新的磁贴。

所以,我最多可以制作第 3 步。 但是我无法加载图片。

图片本身,它不是字节数组。这是一个图像路径。 e.q : 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

【问题讨论】:

    标签: devexpress xtragrid


    【解决方案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"))

    这会将磁盘文件加载到字节数组并显示在磁贴中。我会检查文件是否存在以避免异常。

    这就是我从磁盘加载图像的方法。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多