2012-02-02 37 views
2

listViewで列ヘッダーが取得されません。サブアイテムではなく1つのアイテム(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'ステートメントでその作成をラップするほうが良いでしょう。このコードには、非常に多くの「ノイズ」があります。 –

+0

[ListView Headers Do not Show Up]の複製が可能です(http://stackoverflow.com/questions/1936798/listview-headers-dont-show-up) – nawfal

答えて

8

あなたは、列とサブ項目を見るためにDetailsにあなたのListViewコントロールのViewプロパティを変更する必要があります。

With lvwPatTests 
    .View = View.Details 

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

ありがとうございました。 – desabhotla

1

あなたは既にオブジェクトを持っています。

With lvwPatTests 
     .CheckBoxes = True 
     .GridLines = True 
     .FullRowSelect = True 
     .HideSelection = False 
     .MultiSelect = False 
     .Columns.Add(header1) 
     .Columns.Add(header2) 
    End With 
関連する問題