Saber el Itemdata(vb.net) de un combobox?

Iniciado por Kal_El_00100, 20 Mayo 2010, 05:26 AM

0 Miembros y 1 Visitante están viendo este tema.

Kal_El_00100

hola gente les pido ayuda, estuve buscando y pensando pero no veo la solucion trate de agarrar un codigo viejo de vb 6.0 que tenia e intentar pasarlo a vb.net pero no me resulta hay algo que me falta. miren..

asi obtenia el itemddata de un combo en vb 6.0

Public Function ObtieneListIndex(unCombo As ComboBox, pItemData As Long) As Integer
Dim i As Integer
For i = 0 To unCombo.ListCount - 1
   If pItemData = unCombo.ItemData(i) Then
       ObtieneListIndex = i
       Exit Function
   End If
Next
ObtieneListIndex = -1
End Function

'de esta forma puedo saber que listindex le corresponde a cada item
pero obviamente no pude pasarlo a .net ya que ahora cargo el combo diferente que antes.

el comobo lo cargo asi ahora:

Dim da As New OleDb.OleDbDataAdapter(STRSQL, CN)
       'Dim da As New OleDbDataAdapter(STRSQL, conexion)
       Dim ds As New DataTable(Tabla)
       '  Conexion.Open()
       da.Fill(ds)
       With CMB
           CMB.DisplayMember = Campo
           CMB.ValueMember = Indice
           CMB.DataSource = ds
           CMB.Text = " "
       End With

ahora como hago para saber que item le corresponde a que listindex, siempre comparando con el item de la base de datos y la listindex de los combos.

esto lo hago para que al cargarse un formulario con un por ejemplo IDcliente especifico en los combos se muestren los item correspondientes.
espero que me hayan entendido si por favor me puedieran ayudar. Gracias

[D4N93R]

VB es tan feo xD hehe

Bueno veamos, con esa función ObtieneListIndex, te da el index del texto del item que pases como pItemData?

En .net para saber el index solo hace falta hacer así:

Código (csharp) [Seleccionar]
comboBox.Items.IndexOf(<el objeto del item>);


Bueno y no entiendo mucho lo que quieres hacer hehe, un saludo!

Kal_El_00100

#2
si, hace eso, lo que quiero hacer es algo igual a lo que estaba en vb 6.0 pero en .net, hmm lo que me pasaste no me sirvio poruqe lo use pero todos los valores que me da son -1 como itemdata.

       Public Function Obtiene_ListIndex(ByVal UnCOmbo As ComboBox, ByVal pItemdata As Integer) As Integer

       Dim I As Integer

       For I = 0 To UnCOmbo.Items.Count
           If pItemdata = UnCOmbo.Items.IndexOf(I) Then
               Obtiene_ListIndex = I
           End If
       Next
   End Function

en esto todos los valores son - 1   -->   UnCOmbo.Items.IndexOf(I)

pitem es el numero del item del que yo quiero saber su listidex

Kal_El_00100

#3
ya lo solucuione gracias, usando un poco el cerebelo.

   Public Function Obtiene_ListIndex(ByVal UnCOmbo As ComboBox, ByVal pItemdata As Integer) As Integer

       Dim DRWItem As System.Data.DataRowView
       Dim i As Integer
       For Each DRWItem In UnCOmbo.Items
           i = i + 1
           If pItemdata = DRWItem.Row(0) Then
               Obtiene_ListIndex = i - 1
               Exit Function
           End If

       Next
       Obtiene_ListIndex = -1
   End Function

Como carge el Combo con un datatable el item aparece en una de las columnas, asique puse un for para recorrer los items e ir viendo la columna 0 en la que esta el item, la variable i me va a decir la posicion en la lista.
Gracias igual bye

[D4N93R]

Ah ok, eso era lo que necesitabas, no había entendido..

Recuerda siempre poner los códigos entre los tags [ code ][ /code]

saludos

seba123neo

Kal_El_00100 hay una clase de el guille que simula el ItemData del visual basic 6 en .NET...es solo una clase que por cada item guarda en la clase los datos para despues recurperarlos...mirate yo lo uso y anda de 10:

ItemData en .NET

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Kal_El_00100

Muchas gracias seba, lo voy a probar. eso se ajusta mas a lo que queria.