2015-12-14 80 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

如何引用该行中的另一列以将逻辑关闭?它不会让我在此评论中发布代码示例,所以我只是编辑了原始帖子。 –