2016-08-31 73 views
2

我使用的是Devexpress Xtragrid TileView模塊。Devexpress Xtragrid TileView

基本上我想要我的代碼是這樣的:

  1. 用戶輸入會員ID左上方文本框,然後按負荷。
  2. 如果它們存在,則會出現一個Tile。
  3. 瓷磚應該包含:名稱,狀態,會員ID和照片。
  4. 如果用戶再次按下加載(相同ID或另一個ID),也會添加一個平鋪,等等。除非他們按清除&加載,它應該只剩下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 

UI

回答

0

也許爲時已晚,但在我的情況下,只需要從磁盤中讀取文件並分配到一個字節()列。

首先,表列應該是字節數組所以更換:

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"))

這將加載的磁盤文件到字節數組,在瓷磚所示。我會檢查文件是否存在以避免異常。

這就是我從磁盤加載圖像的過程。

希望它有幫助。

相關問題