Problema --- Dataset - ComboBox

03/01/2006 - 15:46 por J.O.C.T.V | Informe spam
Hola a Todos:
Tengo un problemita necesito un apoyo, mi problema es el siguiente: yo
cargo un Combox, jalando los datos, los jalo de esta forma >

Sub LLENARCOMBOS()
Dim Cn As New SqlConnection
Cn = ConecDatos.AbrirConneccion(ConecDatos.CadenaConexion)
Dim DTA_VENDEDOR As New SqlDataAdapter("SELECT [ID_VENDEDOR],
[NOMBRES]+ ', ' + [APELLIDOS] AS APENOM FROM [IPSOFT01_VENDEDORES] where
Fgeli=0", Cn)
Dim DTS_VENDEDOR As New DataSet
DTA_VENDEDOR.Fill(DTS_VENDEDOR, "VENDEDOR")
cmb_vendedor.DataSource = DTS_VENDEDOR.Tables("VENDEDOR")
cmb_vendedor.ValueMember =
DTS_VENDEDOR.Tables(0).Columns.Item(0).ToString
cmb_vendedor.DisplayMember =
DTS_VENDEDOR.Tables(0).Columns.Item(1).ToString
Cn.Close()
End Sub

De Esta Forma lleno mis Combos, bueno cargo los dato bien, mi problema es
que me carga con el primer registro por defecto, eso es lo que no quiero,
como podria hacer?

Gracias...
 

Leer las respuestas

#1 Jesús López
03/01/2006 - 16:21 | Informe spam
Eso es lo que tiene cargar un combo enlazándolo a datos, que por narices
tienes un elemento seleccionado. Si quieres evitar esto no queda más remedio
que cargar el combo manualmente añadiendo elementos a la colección Items del
combo, pero entonces tendrás el problema de que SelectedValue es siempre
Nothing, aunque esto se puede obviar accediendo por medio de selectedItem.
Aquí tienes un ejemplo con la base de datos Northwind y la tabla Categories:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
LoadDropDownCategories()
End Sub

Sub LoadDropDownCategories()
Dim cn As New SqlClient.SqlConnection("Data
Source=(local)\SQL2K;Integrated Security=SSPI;Initial Catalog=Northwind")
Dim GetCategories As New SqlClient.SqlCommand("SELECT CategoryID,
CategoryName FROM Categories", cn)
Dim adp As New SqlClient.SqlDataAdapter(GetCategories)
Dim table As New DataTable("Categories")
adp.Fill(table)
Dim dv As New DataView(table)
For Each rv As DataRowView In dv
Me.DropDownCategories.Items.Add(rv)
Next
DropDownCategories.DisplayMember = "CategoryName"
DropDownCategories.ValueMember = "CategoryID"
DropDownCategories.SelectedIndex = -1
End Sub

Private Sub DropDownCategories_SelectedValueChanged(ByVal sender As
Object, ByVal e As System.EventArgs) Handles
DropDownCategories.SelectedValueChanged
End Sub

Private Sub DropDownCategories_SelectedIndexChanged(ByVal sender As
Object, ByVal e As System.EventArgs) Handles
DropDownCategories.SelectedIndexChanged
If DropDownCategories.SelectedIndex = -1 Then
Debug.WriteLine("Ninguno seleccionado")
Else
Dim rv As DataRowView =
DirectCast(DropDownCategories.SelectedItem, DataRowView)
Debug.WriteLine("ID Categoría Seleccionada (SelectedItem): " &
rv("CategoryID").ToString())
Debug.WriteLine("Nombre categoría Seleccionada (SelectedItem): "
& rv("CategoryName").ToString())
' No se puede acceder por medio de selected value porque siempre
es nothing
'Debug.WriteLine("ID Categoría seleccionada (SelectedValue): " &
DropDownCategories.SelectedValue.ToString())
End If
End Sub
End Class

El código para responder a una selección del usuario funciona de forma muy
similar cuando lo pones en SelectedIndexChanged que cuando lo pones en
SelectedValueChanged. La diferencia es que al cargar los datos se dispara el
evento SelectedValueChanged pero no el evento SelectedIndexChanged.

Saludos:

Jesús López
MVP



"J.O.C.T.V" escribió en el mensaje
news:
Hola a Todos:
Tengo un problemita necesito un apoyo, mi problema es el siguiente: yo
cargo un Combox, jalando los datos, los jalo de esta forma >

Sub LLENARCOMBOS()
Dim Cn As New SqlConnection
Cn = ConecDatos.AbrirConneccion(ConecDatos.CadenaConexion)
Dim DTA_VENDEDOR As New SqlDataAdapter("SELECT [ID_VENDEDOR],
[NOMBRES]+ ', ' + [APELLIDOS] AS APENOM FROM [IPSOFT01_VENDEDORES] where
Fgeli=0", Cn)
Dim DTS_VENDEDOR As New DataSet
DTA_VENDEDOR.Fill(DTS_VENDEDOR, "VENDEDOR")
cmb_vendedor.DataSource = DTS_VENDEDOR.Tables("VENDEDOR")
cmb_vendedor.ValueMember > DTS_VENDEDOR.Tables(0).Columns.Item(0).ToString
cmb_vendedor.DisplayMember > DTS_VENDEDOR.Tables(0).Columns.Item(1).ToString
Cn.Close()
End Sub

De Esta Forma lleno mis Combos, bueno cargo los dato bien, mi problema es
que me carga con el primer registro por defecto, eso es lo que no quiero,
como podria hacer?

Gracias...

Preguntas similares