2015-12-14 43 views
0

我剛開始使用DataListView(ObjectListView包的一部分)。我將數據表綁定到DataListView,但現在我想根據某些標準將數據添加到數據中。我花了數小時閱讀幫助文件(http://objectlistview.sourceforge.net/cs/recipes.html#how-do-i-bind-a-dataset-to-an-objectlistview),但他們似乎都參考'ObjectListView'而不是'DataListView'。在DataListView中設置圖像(ObjectListView的一部分)

我已經閱讀了很多關於imagegetter的內容,但我不認爲這適用於綁定到數據表(如果是這樣,怎麼辦?)。

我應該循環每一行並根據標準手動添加圖像嗎?如果是這樣,你能幫我開始嗎?

這是一個來自他們網頁的例子。看看他們是如何根據數據在第一列(和其他)中顯示圖像的?我想用DataListView來做到這一點。 enter image description here

謝謝先進。我使用的VB.net

現在我有這樣的:

Dim myImages = New ImageList 
    myImages.Images.Add(My.Resources.important_High_icon) 
    myImages.Images.Add(My.Resources.important_Med_icon) 
    myImages.Images.Add(My.Resources.important_Low_icon) 
    myDataListView.SmallImageList = myImages 

    myDataListView.OwnerDraw = True 
    Image_Column.ImageGetter = Function(x As Object) As Integer 
            Select Case (Important_Column.value) 
             Case "High" 
              Return 0 
             Case "Medium" 
              Return 1 
             Case "Low" 
              Return 2 
            End Select 
           End Function 

如何該行立足邏輯關在引用另一列?在上面的例子中,我想在「Important_Column」

回答

1

首先參考價值,您名單OwnerDraw屬性設置爲true:

yourList.OwnerDraw = True 

您的名單,然後鏈接到一個ImageList:

myImages = New ImageList 
    myImages.Images.Add(My.Resources.image_1) 
    myImages.Images.Add(My.Resources.image_2) 
    yourList.SmallImageList = yourImageList 

那麼你應該在你的ObjectListView列設置圖像的getter委託,例如:

myOlvColumn.ImageGetter = 
    Function(x As Object) As Integer 
     Dim casted As yourColumnRealType = DirectCast(x, yourColumnRealType) 
     Return If(yourCondition, 0, 1) 
    End Function 

委託函數返回圖像列表中的索引,或者,由於ObjectListView是自繪的,委託可以返回圖像。

+0

謝謝!這讓我更靠近了一步。我現在可以顯示圖像,但我不知道我明白你在這裏做什麼:昏暗鑄造作爲yourColumnRealType = DirectCast(x,yourColumnRealType)。我只是評論說出來,並使其返回0沒有邏輯,我得到一個圖像。我會再咀嚼一下,以便按照我需要的方式工作。感謝您的幫助 –

+0

@malt_man我將Object類型轉換爲列中的類型,以便您可以根據列值決定要返回哪個圖像。 – vulkanino

+0

如何引用該行中的另一列以將邏輯關閉?它不會讓我在此評論中發佈代碼示例,所以我只是編輯了原始帖子。 –