Foros del Web » Programando para Internet » ASPX (.net) »

3 DropDownList dentro de un GridView

Estas en el tema de 3 DropDownList dentro de un GridView en el foro de ASPX (.net) en Foros del Web. Buenas, debo colocar 3 DropDownList dentro de un gridview, con la siguiente condicion que cuando edito (boton Edit) aparecen los 3 DDL, OK, pero cuando ...
  #1 (permalink)  
Antiguo 21/06/2010, 08:49
 
Fecha de Ingreso: mayo-2008
Mensajes: 353
Antigüedad: 15 años, 11 meses
Puntos: 3
Pregunta 3 DropDownList dentro de un GridView

Buenas, debo colocar 3 DropDownList dentro de un gridview, con la siguiente condicion que cuando edito (boton Edit) aparecen los 3 DDL, OK, pero cuando seleccione DDLpais, en el DDLciudad esten solo la ciudades del pais seleccionado y cuando de click en DDLciudad, el DDLclte esten solo los clientes de la ciudad seleccionada
Este codigo fuera de un GridView me funciona perfecto, pero el detalle esta dentro de un GridView, por no se como manejar lo del DDLpias_SelectedIndexChanged dentro del GV.
Trabajo con VS 2005
Gracias
  #2 (permalink)  
Antiguo 21/06/2010, 08:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: 3 DropDownList dentro de un GridView

tienes que crear un template field
Código ASP:
Ver original
  1. <asp:TemplateField HeaderText=”Pais”>
  2. <ItemTemplate>
  3. <asp:DropDownList ID=”DDLPais” runat=server>
  4. </asp:DropDownList>
  5. </ItemTemplate>
  6. </asp:TemplateField>

y se llena de la siguiente manera:
Código ASP:
Ver original
  1. Protected Sub drg_queue_SelectedIndexChanged(ByVal sender As Object, ByVal e As GridViewRowEventArgs) _
  2. Handles drg_queue.RowDataBound
  3. If e.Row.RowType = DataControlRowType.DataRow Then
  4. ‘—->lleno un datatable con la data que necesito
  5. Dim dt_paises As New DataTable
  6. qsql =select pias_id, pias_nombre from paises”
  7. dt_paises= fngnl.obtener_datasource_sql(qsql)
  8. ‘—->lleno el combobox o dropdownlist…
  9. Dim ddl As DropDownList = e.Row.FindControl(“DDLPais”)
  10. ddl.DataSource = dt_paises
  11. ddl.DataTextField = “pais_nombre”
  12. ddl.DataValueField = “pais_id”
  13. ddl.DataBind()
  14. End If
  15. End Sub


ya el resto es ajustar los Querys:

Código SQL:
Ver original
  1. "SELECT ciudad_id, ciudad_nombre from ciudades WHERE pais_id ='" & DDLPaises.SelectedValue & "'"

espero que te sirva...
  #3 (permalink)  
Antiguo 21/06/2010, 09:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 51
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: 3 DropDownList dentro de un GridView

te recomiendo usar para los filtros el control de ajax cascadingdropdown
mira como aplicarlo http://www.youtube.com/watch?v=Cf_Jdp94AY8
  #4 (permalink)  
Antiguo 21/06/2010, 10:29
 
Fecha de Ingreso: mayo-2008
Mensajes: 353
Antigüedad: 15 años, 11 meses
Puntos: 3
Pregunta Respuesta: 3 DropDownList dentro de un GridView

Gracias por responder Yatiac, el primer DDL ya sabia como hacerlo pero el detalle esta en como lleno el segundo DDL, recuerda, son 3 DDL dentro de un GV, y el 2do DDL depende de lo que se seleccione en el 1er DDL y el 3ro DDL depende del 2do DDL.

Amigo esclavo-del-poder, gracias por reponder, pero el detalle es como llenar el 2do DDL dependiendo del 1re DDL que ambos estan dentro de un GV.
Gracias, este foro es de maravilla
  #5 (permalink)  
Antiguo 21/06/2010, 10:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 286
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: 3 DropDownList dentro de un GridView

Prueba el Diretcast(row.findcontrol("Ddl_pais"),dropdownlist ).Evento(Selectedvalue,etc.) ... capaz pueda servirte de algo.
si tienes un codigo por cada fila podrias usarlo para realizar leer todo el grid con un for usando como valor ese codigo de fila
y luego realizar un datasource a esa nueva fila es lo que se me viene a la mente

Aunque yo te recomiendo que en la parte inferior crees un pequeño modulo de actualizacion donde podrias hacer todos estos cambios, y luego grabarlo denuevo en tu gridview.
No soy muy fan de hacer esas operacioens dentro del gridview
  #6 (permalink)  
Antiguo 22/06/2010, 10:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 353
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: 3 DropDownList dentro de un GridView

Gracias roger1187, pero NO funciona es lo mismo que usar CType
  #7 (permalink)  
Antiguo 22/06/2010, 13:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 34
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: 3 DropDownList dentro de un GridView

yo tube el mismo problema hace poco, pero con el control details view donde filtraba colonias, escuelas, negocios, etc de acuerdo a un dropdownlist de ciudades, no se si te sea de ayuda o sea el mismo problema para el gridview pero yo lo resolvi algo asi:

en el evento o parte del codigo que deses llenar tu ddl o filtrarlo:

If detailsview1.CurrentMode = DetailsViewMode.Edit Then
Dim ddl As DropDownList=ctype(detailsview1.findcontrol("Ddl_p ais"),dropdownlist )
End If

y ya namas haces el filtro o llenas tu otro drop de acuerdo al ddl.selectedvalue

Te digo, no se la similitud entre del detailsview y el gridview, pero ambos tienen modo editar, insertar, actualizar no??

salu2!
  #8 (permalink)  
Antiguo 23/06/2010, 18:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 353
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: 3 DropDownList dentro de un GridView

Gracias por responder Davicomeh, dejame probar y doy aviso
  #9 (permalink)  
Antiguo 25/06/2010, 04:10
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: 3 DropDownList dentro de un GridView

Vamos a ver, tienes que generar un evento en el ddl de paises tal que así:
protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = new DataTable();
//función que te devuelva en dt las provincias cuyo idPais en la TablaProvincias sea igual que el SelectedValue del ddlPais
this.ddlProvincias.DataSource = dt;
this.ddlProvincias.DataTextField = "municipio";
this.ddlProvincias.DataValueField = "id";
this.ddlProvincias.DataBind();
}

Teniendo en cuenta que en TablaMunicipios exista "municipio" con el nombre de municipio y en "id" un identificador único para cada edificio
  #10 (permalink)  
Antiguo 25/06/2010, 16:39
 
Fecha de Ingreso: mayo-2008
Mensajes: 353
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: 3 DropDownList dentro de un GridView

Bueno ya lo consegi, coloque otro label donde esta el label que me muestra la descripcion del pais otro donde esta la descripcion de la region y otro para cliente
todas Visible=False, osea en el area de Item Template del GV
p r c son los label que fueron creados
estas ppai y regg son variables

luego en el

Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
Dim controlx As String
Dim pai As Label = DirectCast(GridView1.Rows(e.NewEditIndex).FindCont rol("p"), Label)
Dim reg As Label = DirectCast(GridView1.Rows(e.NewEditIndex).FindCont rol("r"), Label)
Dim cli As Label = DirectCast(GridView1.Rows(e.NewEditIndex).FindCont rol("c"), Label)

controlx = "ddlpais"
GridView1.EditIndex = e.NewEditIndex
FillCustomerInGrid()
BindGridDropDownList(e.NewEditIndex, pai, controlx)

controlx = "ddlregion"
GridView1.EditIndex = e.NewEditIndex
BindGridDropDownList(e.NewEditIndex, reg, controlx)

controlx = "ddlclte"
GridView1.EditIndex = e.NewEditIndex
BindGridDropDownList(e.NewEditIndex, cli, controlx)
End Sub

Protected Sub BindGridDropDownList(ByVal iEditIndex As Integer, ByVal lblpai As Label, ByVal contro As String)
If contro = "ddlpais" Then
Dim cmbType As DropDownList = DirectCast(GridView1.Rows(iEditIndex).FindControl( contro), DropDownList)
cmbType.DataSource = customer.Fetchpais()
cmbType.DataBind()
cmbType.Items.FindByValue(lblpai.Text).Selected = True
ppai = lblpai.Text
Else
If contro = "ddlregion" Then
Dim cmbType1 As DropDownList = DirectCast(GridView1.Rows(iEditIndex).FindControl( contro), DropDownList)
cmbType1.DataSource = customer.Fetchregion(ppai)
cmbType1.DataBind()
cmbType1.Items.FindByValue(lblpai.Text).Selected = True
regg = lblpai.Text
Else
Dim cmbType2 As DropDownList = DirectCast(GridView1.Rows(iEditIndex).FindControl( contro), DropDownList)
cmbType2.DataSource = customer.Fetchclte(ppai, regg)
cmbType2.DataBind()
cmbType2.Items.FindByValue(lblpai.Text).Selected = True
End If
End If

End Sub


Public Function Fetchpais() As DataTable
Dim sql As String = "SELECT descripcion,codpais FROM pais"
Dim da As New OleDbDataAdapter(sql, cnstr)
Dim dt As New DataTable()
da.Fill(dt)
Return dt
End Function
Public Function Fetchregion(ByVal varpais As String) As DataTable
Dim sql As String = "SELECT * FROM region where pais = '" & varpais & "'"
Dim da As New OleDbDataAdapter(sql, cnstr)
Dim dt As New DataTable()
da.Fill(dt)
Return dt
End Function
Public Function Fetchclte(ByVal varpais As String, ByVal varregion As String) As DataTable
Dim sql As String = "SELECT * FROM CLIENTE where codpais = '" & varpais & "' AND codregion = '" & varregion & "'"
Dim da As New OleDbDataAdapter(sql, cnstr)
Dim dt As New DataTable()
da.Fill(dt)
Return dt
End Function


y listo osea 3 DDL dentro de un GV y cada DDL se llena dependiento del anterior DDL

Etiquetas: dropdownlist, gridview, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:30.