Dependencias en Listas

06/02/2006 - 14:15 por james | Informe spam
Hola y Buenos Días a Todos:

Creo una web en ASP.Net y quiero que mis dropdwonlist sean dependientes,
entonces como creo las instancias, depende si las extraigo de una base de
datos, depende si creo procedimientos almacenados?, bueno, cual es una buena
alternativa de seleccion, ojala con codigo de muestra para entender las
respuestas, muchas gracias.
 

Leer las respuestas

#1 David Hernandez Diez
06/02/2006 - 20:53 | Informe spam
La solución más básica es que en el evento del SelectedIndexChanged del
"combo1" hagas una query (o filtrado con un DataView si tienes cacheado
de alguna forma el DataSet) y este se lo asignes al "combo2" o sea el
dependiente.


Esta es la forma más sencilla, el problema que tienes es que cada vez
que selecciones un nuevo valor en el "combo1" pues hay un postback al
servidor ... con lo que si crees que el usuario puede cambiar
frecuentemente el combo tendrás que hacerlo con javascript en cliente o
si necesitas hacer queries cada vez que se cambia el valor tendrás que
usar Ajax


He encontrado un ejemplo básico en un foro
español:(http://www.softwaremix.net/viewtopic-232145.html)

<%@ Page Language="VB” %
<script runat="server"
Private Sub Page_Load(ByVal sender As System.Object‚ _
ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim dReader As System.Data.SqlClient.SqlDataReader
Dim SqlConnection1 As New System.Data.SqlClient.SqlConnection
Const CONN As String = “Server=TuServidorSQLServer;Integrated
Security=True;Database=Northwind"
SqlConnection1.ConnectionString = CONN
SqlConnection1.Open()
Dim SQLCommand1 As New System.Data.SqlClient.SqlCommand
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandText = “SELECT SupplierId‚ CompanyName “ & _
” FROM Suppliers"
dReader = SqlCommand1.ExecuteReader()
ListBox1.DataSource = dReader
ListBox1.DataTextField = “CompanyName"
ListBox1.DataValueField = “SupplierId"
ListBox1.DataBind()
dReader.Close()
SqlConnection1.Close()

ListBox1.SelectedIndex = 0
PopulateDependentListbox(ListBox1.Items(0).Value)
End If
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object‚ _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
PopulateDependentListbox(ListBox1.SelectedItem.Value)
End Sub

Sub PopulateDependentListbox(ByVal supplierID)
Dim dReader As System.Data.SqlClient.SqlDataReader
Dim SQLCommand2 As New System.Data.SqlClient.SqlCommand
Dim SqlConnection2 As New System.Data.SqlClient.SqlConnection
Const CONN As String = “Server=TuServidorSQLServer;Integrated
Security=True;Database=Northwind"
SqlConnection2.ConnectionString = CONN
SQLCommand2.Connection = SqlConnection2
Dim param As New Data.SqlClient.SqlParameter("@supplierID"‚ supplierID)
SqlCommand2.Parameters.Add(param)
SqlCommand2.CommandText = “SELECT Products.ProductID‚ “ & _
” Products.ProductName “ & _
” FROM Products WHERE (Products.SupplierID = @supplierID)"
SqlConnection2.Open()
dReader = SqlCommand2.ExecuteReader()
ListBox2.DataSource = dReader
ListBox2.DataTextField = “ProductName"
ListBox2.DataValueField = “ProductID"
ListBox2.DataBind()
dReader.Close()
SqlConnection2.Close()
End Sub
</script

<html
<head runat="server"
<titleListBoxes Dependientes</title
</head
<body
<form id="form1” runat="server"
<div
<asp:ListBox ID="ListBox1” Runat="server” AutoPostBack="True"
</asp:ListBox
<asp:ListBox ID="ListBox2” Runat="server"
</asp:ListBox
</div
</form
</body
</html>


Saludos,
David Hernández Díez
MCDBA MCSD vs6 & .NET
DCE5 .Net1.1 & DCE2 .NET 2.0


james wrote:
Hola y Buenos Días a Todos:

Creo una web en ASP.Net y quiero que mis dropdwonlist sean dependientes,
entonces como creo las instancias, depende si las extraigo de una base de
datos, depende si creo procedimientos almacenados?, bueno, cual es una buena
alternativa de seleccion, ojala con codigo de muestra para entender las
respuestas, muchas gracias.

Preguntas similares