2012-02-02 87 views
2

我没有在列表视图中获得列标题。只有一个项目(0)不显示子项目。这是我的代码。告诉我它有什么问题。 预先感谢您。列表视图列标题不显示VB.Net

Dim PTCode As Integer = CInt(ChildPatnameTag) 
ClearSQl() 

    CheckState() 
    strSql = "select tCode,tprice from patTests where pCode=" & PTCode 
    strConn.Open() 
    Dim TCmdSelect As New OleDbCommand(strSql, strConn) 
    Dim TReader As OleDbDataReader = TCmdSelect.ExecuteReader() 
    'Column Header 
    Dim header1, header2 As ColumnHeader 
    header1 = New ColumnHeader 
    header1.TextAlign = HorizontalAlignment.Left 
    header1.Text = "Test" 
    header1.Width = 250 
    header2 = New ColumnHeader 
    header2.TextAlign = HorizontalAlignment.Left 
    header2.Text = "Price" 
    header2.Width = 50 
    With lvwPatTests 
     .CheckBoxes = True 
     .GridLines = True 
     .FullRowSelect = True 
     .HideSelection = False 
     .MultiSelect = False 
     .Columns.Add("Test") 
     .Columns.Add("Price") 
    End With 
    If TReader.HasRows Then 
     Do While TReader.Read 
      ClearSQl() 
      strSql = "Select tName from tests where tCode=" & TReader("tCode") 
      Dim TCCmdSelect As New OleDbCommand(strSql, strConn) 
      Dim TCReader As OleDbDataReader = TCCmdSelect.ExecuteReader() 
      If TCReader.HasRows Then 
       Do While TCReader.Read 
         For i = 0 To TCReader.FieldCount - 1 
         ' Create List View Item (Row) 
         Dim lvi As New ListViewItem 
         ' First Column can be the listview item's Text 
         lvi.Text = TCReader.Item("tName").ToString 
         ' Second Column is the first sub item 
         lvi.SubItems.Add(TReader.Item("tprice")) 
         MsgBox(TCReader.Item("tName").ToString) 
         MsgBox(TReader.Item("tprice")) 
         ' Add the ListViewItem to the ListView 
         lvwPatTests.Items.Add(lvi) 
        Next 
       Loop 
       TCCmdSelect.Dispose() 
       TCReader.Close() 
       TCReader = Nothing 
      Else 
       TCCmdSelect.Dispose() 
       TCReader.Close() 
       TCReader = Nothing 
      End If 
     Loop 
     TReader.Close() 
     TReader = Nothing 
    End If 
+1

将对象设置为Nothing的意义毫无意义。虽然你需要在实现IDisposable的对象上调用Dispose方法,但最好将它们的创建封装在Using语句中。这段代码中有很多“噪音”。 – 2012-02-02 06:18:24

+0

可能重复的[ListView标题不显示](http://stackoverflow.com/questions/1936798/listview-headers-dont-show-up) – nawfal 2013-09-01 20:37:39

回答

8

您需要才能看到列和子项的ListView控件的视图属性更改为Details

With lvwPatTests 
    .View = View.Details 

    .CheckBoxes = True 
    .GridLines = True 
    .FullRowSelect = True 
    .HideSelection = False 
    .MultiSelect = False 
    .Columns.Add("Test") 
    .Columns.Add("Price") 
End With 
+0

感谢您的帮助Lars Tech。 – desabhotla 2012-02-03 07:17:03

1

你已经拥有的对象。只需将它们传入:

With lvwPatTests 
     .CheckBoxes = True 
     .GridLines = True 
     .FullRowSelect = True 
     .HideSelection = False 
     .MultiSelect = False 
     .Columns.Add(header1) 
     .Columns.Add(header2) 
    End With