none
VB2008 Combobox執行後第一筆資料空白問題 RRS feed

  • 問題

  • 請問各位大大,當combobox設定自動讀取資料庫的record但執行後第一筆資料總是空白的,也就是必需按下下拉式選項後才會出現資料,我已經搜尋Google和Yahoo。得到的方法例如Combox1.SelectedIndex=-1 或combox.selectedindex=0(這組在vb2008無法使用) 並將DropDownStyle的屬性設為DropDown但依然無法得到執行後第一筆資料是有資料的,請問這該如何設定,執行後第一筆才會有資料也就是不用按下拉式選項。感謝各位大大的教導。以下相關程式碼

    Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
            Next

    感謝各位大大的指導

     

    2009年11月20日 下午 11:35

解答

  • Hi!

    1. 加上 ComboBox1.SelectedIndex = 0 應該可以使用,除非您的資料有空白

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
            Next
            Me.ComboBox1.SelectedIndex = 0  // 加上這行

    2. 所以可以確認看看

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
            Next
            MessageBox.Show(ComboBox1.Items(0))  // 加上這行,看看在 index = 0 時是否有資料

    3. 也許在資料加入 Combobx 時,您可以先把從 SQL 語法或者將資料加入 Combobox 時將空白或者Null的資料不要加入

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                If String.IsNullOrEmpty(a4.Tables.Item(0).Rows(i).Item("CityName")) = False Then
                    ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
                End If
            Next
            ComboBox1.SelectedIndex = 0

    4. Combobox 也可以透過資料繫結的方式
            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            ComboBox1.DataSource = xs
            ComboBox1.DisplayMember = "CityName"
            ComboBox1.SelectedIndex = 0

    • 已標示為解答 MichaelTsai10 2009年11月21日 上午 09:09
    2009年11月21日 上午 12:04

所有回覆

  • Hi!

    1. 加上 ComboBox1.SelectedIndex = 0 應該可以使用,除非您的資料有空白

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
            Next
            Me.ComboBox1.SelectedIndex = 0  // 加上這行

    2. 所以可以確認看看

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
            Next
            MessageBox.Show(ComboBox1.Items(0))  // 加上這行,看看在 index = 0 時是否有資料

    3. 也許在資料加入 Combobx 時,您可以先把從 SQL 語法或者將資料加入 Combobox 時將空白或者Null的資料不要加入

            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            For i = 0 To xs.Rows.Count - 1
                If String.IsNullOrEmpty(a4.Tables.Item(0).Rows(i).Item("CityName")) = False Then
                    ComboBox1.Items.Add(a4.Tables.Item(0).Rows(i).Item("CityName"))
                End If
            Next
            ComboBox1.SelectedIndex = 0

    4. Combobox 也可以透過資料繫結的方式
            Dim ys As New SqlDataAdapter("SELECT CityCode,CityName From PURCI ", strDbCon)
            ys.Fill(a4, "PURCI")
            Dim xs As New DataTable
            xs = a4.Tables("PURCI")
            ComboBox1.DataSource = xs
            ComboBox1.DisplayMember = "CityName"
            ComboBox1.SelectedIndex = 0

    • 已標示為解答 MichaelTsai10 2009年11月21日 上午 09:09
    2009年11月21日 上午 12:04
  • 感謝大大你您,謝謝您為我解惑。
    2009年11月21日 上午 09:09