2014-03-19 87 views
2

這是我的場景。我在syspro中有一個自定義窗格,它是一個顯示由SQL查詢獲取的數據的列表視圖。現在我想實現的是突出顯示適用於特定條件的行。我如何使用VBScript?我發現下面的代碼,但沒有得到它的工作?是不是有什麼毛病此代碼:VBScript Listview顏色行

Public Sub Color_Row(intLineCount As Long, RowColor As OLE_COLOR) 
    Dim itmIdx As ListItem 
    Dim lstSI As ListSubItem 
    Dim intIdx As Integer 

    On Error GoTo ErrorRoutine 

    Set itmIdx = CustomizedPane.CodeObject.ListItems(intLineCount) 
    itmIdx.ForeColor = RowColor 
    For intIdx = 1 To CustomizedPane.CodeObject.ColumnHeaders.Count - 1 
    Set lstSI.ForeColor = itmIdx.ListSubItems(intIdx) 
    lstSI.ForeColor = RowColor 
    Next 
    Set itmIdx = Nothing 
    Set lstSI = Nothing 
    Exit Sub 

    ErrorRoutine : 
    MsgBox Err.Description 
    End Sub 

我發現代碼中的http://www.vbforums.com/showthread.php?231157-VB-Color-a-row-in-a-ListView

我該如何爲listview中的特定行着色?

+0

看看使用ItemDataBound事件。這是因爲每個項目都綁定在列表視圖中。然後,您可以比較該項目,如果它符合您的條件,您可以對該項目進行着色......使其變爲粗體或任何其他風格變化。 – Mych

+0

是的,我讀取數據的方式是使用一個已經寫好的腳本,它自動加載由SQL字符串查詢的數據並將其存儲在rs變量中。然後循環遍歷rs中的每條記錄,直到達到EOF –

+0

好的您不綁定數據,而是在循環中將項目添加到列表中。所以當你循環做一個比較。如果匹配將樣式更改應用於該項目,則在循環中移至下一個 – Mych

回答

1

您正在激活您的listsubitem作爲forecolor對象。

從這:

Set lstSI.ForeColor = itmIdx.ListSubItems(intIdx) 

這樣:

Set lstSI = itmIdx.ListSubItems(intIdx) 

完成代碼:

Public Sub Color_Row(intLineCount As Long, RowColor As OLE_COLOR) 
    Dim itmIdx As ListItem 
    Dim lstSI As ListSubItem 
    Dim intIdx As Integer 

    On Error Goto ErrorRoutine 

    Set itmIdx = CustomizedPane.CodeObject.ListItems(intLineCount) 
    itmIdx.ForeColor = RowColor 
    For intIdx = 1 To CustomizedPane.CodeObject.ColumnHeaders.Count - 1 
     Set lstSI = itmIdx.ListSubItems(intIdx) 
     lstSI.ForeColor = RowColor 
    Next 
    Set itmIdx = Nothing 
    Set lstSI = Nothing 
    Exit Sub 

    ErrorRoutine : 
    MsgBox Err.Description 
End Sub