2014-05-12 3 views
0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    ' Datatable ADD COLUMN NAMES 
    table1.Columns.Add(" ÜRÜN CİNSİ", GetType(String)) 
    table1.Columns.Add("STOK KODU", GetType(String)) 
    table1.Columns.Add("BİRİM FİYAT/KG", GetType(Integer)) 
    table1.Columns.Add("KDV ORANI", GetType(Integer)) 

    ' DAtatable ADD ROWS 
    table1.Rows.Add("ERİK", "Y-9532", 1250, 6) 
    table1.Rows.Add("KİRAZ", "Z-1250", 1500, 8) 
    table1.Rows.Add("ÇİLEK", "H-2548", 2000, 8) 

    'ADD TO combobox 
    ComboBox1.Items.Add("ERİK") 
    ComboBox1.Items.Add("KİRAZ") 
    ComboBox1.Items.Add("ÇİLEK") 

End Sub 

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) 


    Dim Table_ndx As Integer 

    For index = 0 To ComboBox1.Items.Count 

     If (ComboBox1.SelectedItem == table1.Rows(index)(0)) Then 

      Table_ndx = index 
     End If 
    Next 

    Me.Text = Table_ndx.ToString 

    lbl0_stok_kodu.Text = table1.Rows(Table_ndx)(1) 'stkkodu 
    tb1_birim_kg.Text = table1.Rows(Table_ndx)(2) 'birim kg 
    tb2_kdv_orani.Text = table1.Rows(Table_ndx)(3) 'kdv oranı 

Это «Table_ndx» всегда приходит НОЛЬ, потому что он не получает, еслиесли (val = val) не работает! никогда не получает, если блок

Я уже имел пункты в выпадающем списке и загрузили блок их в DataTable слишком

обновление я изменил его одного = но код работает, но до сих пор Таблица_ndx равна ZERO

+1

оператор VB равенства '=' –

+0

Скорее всего, потому что '' ComboBox1.SelectedItem' и table1.Rows (index) (0) 'оба типа' Object', вероятно, сравнивают ссылки на объекты, а не их значения. Вы можете попробовать 'If (ComboBox1.SelectedItem.ToString() = table1.Rows (index) (0) .ToString()) Then' или' If (DirectCast (ComboBox1.SelectedItem, String) = DirectCast (table1.Rows (index) (0), String)) Тогда 'и посмотрим, работает ли одна из них. –

ответ

1

Ваша проблема имеет два аспекта Во-первых, как уже было отмечено, ваше сравнение должно быть

If (ComboBox1.SelectedItem = table1.Rows(index)(0)) Then 

во-вторых, у вас нет проверки ошибок, если вы сделали, вы бы узнали, что итерация от 0 до Items.Count от 0 до 3. Там нет индекса 3 в таблице данных, поэтому код бомбы, и он никогда не попадает в остальную часть вашего кода. Измените это на следующее ...

For index = 0 To ComboBox1.Items.Count - 1 

Всегда помните, что VB.NET использует индексацию 0 на основе, так что вы только когда-либо итерацию к MaxArraySize - 1.

1

VB.NET не знает, что такое ==.

Должно быть:. (Если ваш COMBOX содержит объект как table1.Rows (0) (индекс)

If (ComboBox1.SelectedItem = table1.Rows(index)(0)) Then 
    ... 
End If 
+0

(0) (индекс) следует отменить. В противном случае вы всегда получите первый индекс строки и столбца. – APrough

+0

thx, исправлено. –

Смежные вопросы