2011-05-14 15 views
0

我在Visual Basic中很新。我在我的表單中有一個選項卡控件,在裏面我放置了一個listview。我想要做的是每次單擊每個選項卡時填充listview。但我不知道該怎麼做。在VB 2010中填充TabView控件中的ListView

任何人都可以幫我嗎?

這裏是我的代碼

Public Class Form2 

    Private Sub PopulateRecords() 
     Dim TSR As New ADODB.Recordset 
     Dim STRSQL As String = "" 
     STRSQL &= "SELECT * from Records " & vbCrLf 
     STRSQL &= "WHERE (Customer_name like '" & TextBox1.Text & "%' or Item_name like '%" & TextBox1.Text & "%' or Item_code like '%" & TextBox1.Text & "%' or Price like '%" & TextBox1.Text & "%' or Qty like '%" & TextBox1.Text & "%' or Total_price like '%" & TextBox1.Text & "%' or Date_started like '%" & TextBox1.Text & "%' or Date_finish like '%" & TextBox1.Text & "%')" & vbCrLf 
     STRSQL &= "order by Customer_name, Item_name" & vbCrLf 
     TSR.Open(STRSQL, CNN, 1, 3) 
     ListView1.Items.Clear() 
     While Not TSR.EOF 
      ListView1.Items.Add(TSR.Fields("Customer_name").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Item_name").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Item_code").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Price").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Qty").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Total_price").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Date_started").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("Date_finish").Value) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TSR.Fields("ID").Value) 
      TSR.MoveNext() 
     End While 
     TSR.Close() 
    End Sub 

    Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click 
     Call PopulateRecords() 
    End Sub 


End Class 
+0

這不是從你的問題在您當前的實現已經追不上你的目標明確 - 請你詳細說明一下嗎? – 2011-05-14 17:48:17

+0

對不起。那麼現在的問題是每次我點擊每個標籤時,我的列表視圖仍然是空的。希望你現在明白我的意思。 – Celine 2011-05-14 17:53:19

回答

0

你應該儘量響應SelectedIndexChanged event父(該TabControl的)位。當用戶在選項卡之間移動時會觸發此操作。當頁面本身被點擊時,TabPage.Click被激發 - 而不是當標籤被改變爲。

+0

非常感謝Will A!這真的有幫助。 – Celine 2011-05-14 18:10:07

+0

很高興爲您提供幫助,Celine - 享受您的.Net編程! – 2011-05-14 18:10:42

0

使用SelectedIndexChanged您的選項卡控件的事件。

private sub tabControl_SelectedIndexChanged(Byval sender as System.Object, _ 
      Byval e as System.EventArgs) Handles tabControl.SelectedIndexChanged 
    { 
     PopulateRecords() 
    } 

還可以識別哪些標籤頁您正在查看的:

byval page as TabPage = tabControl.TabPages(tabControl.SelectedIndex) 

希望這有助於= d

+0

再次嗨。我現在在我的選項卡控件中有兩個選項卡,每個選項卡都有不同的列表視圖。當我使用tabcontrol的SelectedIndexChanged時,只填充標籤頁1列表視圖。應該填充另一組信息的標籤頁2中的列表視圖保留爲空。 – Celine 2011-05-14 18:48:38

+0

您可以使用** SelectedIndexChanged **事件並通過** tabControl.SelectedIndex **確定用戶正在查看的標籤頁。所以當選擇的索引是1時,調用** PopulateRecordsForTabPage1 **;如果選擇的索引是2,則調用** PopulateRecordsForTabPage2 **。順便說一下,你有單獨的函數來填充每個列表視圖嗎? – cubski 2011-05-14 19:04:43

+0

是的,我確實有一個單獨的功能。我會嘗試你剛纔建議的,並讓你知道它是如何工作的。非常感謝。 – Celine 2011-05-14 19:10:33