Foros del Web » Programación para mayores de 30 ;) » .NET »

Error al rellenar Dropdownlist de un datagrid

Estas en el tema de Error al rellenar Dropdownlist de un datagrid en el foro de .NET en Foros del Web. Hola a to2, Tengo un Datagrid y quiero añadirle a este datagrid un DropDownList, para ello, guiandome de un tutorial he creado dentro del Datagrid ...
  #1 (permalink)  
Antiguo 09/08/2006, 01:51
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 21 años, 5 meses
Puntos: 0
Error al rellenar Dropdownlist de un datagrid

Hola a to2,
Tengo un Datagrid y quiero añadirle a este datagrid un DropDownList, para ello, guiandome de un tutorial he creado dentro del Datagrid el dropdown de la siguiente manera :
Código:
 
<asp:TemplateColumn HeaderText="Orden">
<ItemTemplate>
  <asp:Label ID="lblTempOrden" Text='<%# DataBinder.Eval(Container.DataItem, "orden") %>' Runat=server />
  <asp:DropDownList id="cboOrden"  DataSource="<%# BindOrden() %>" DataTextField="Orden"   DataTextValue="Orden"         runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
Hasta aqui creo que bien, pero ahora quiero rellenar mi DropDownList del 1 al 20
para ello he creado la siguiente función:
Código:
 
function BindOrden()
dim i
For i = 0 to 20
   cboOrden.Items.Add(new ListItem(i.ToString(), i.ToString()))   
Next
return true
End function
Pero me dice el siguiente error : No se ha declarado el nombre 'cboOrden'.
el error me da en la siguiente linea : cboOrden.Items.Add(new ListItem(i.ToString(), i.ToString()))
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 09/08/2006, 08:30
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
es obvio que no funciona ese code friend, la primera es porque en tu funcion no estas regresando nada como datasource y 2da estás usando un control dropdownlist dentro de un control (Datagrid) y debes obtener esa referencia mediante el evento ItemDataBound del datagrid.. y podría quedarte de ésta forma:

Cita:
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim ddl As DropDownList = CType(e.Item.FindControl("cboOrden"), DropDownList)

For i As Integer = 0 To 10
ddl.Items.Add(New ListItem(i, i))
Next
End If
End Sub
Checalo y cualquier cosa por aqui andaremos..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 10/08/2006, 01:21
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias Rootk por la respuesta
He probado el código que me has enviado (he sustiutido Handles DataGrid1.ItemDataBound por dgProducts.ItemDataBound) pero no me funciona me da el siguietne error:
BC30506: La cláusula Handles requiere una variable WithEvents

He quitado el "Handles dgProducts.ItemDataBound"
Código:
 
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, 
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) 
 
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
dim i as integer
Dim ddl As DropDownList = CType(e.Item.FindControl("cboOrden"), DropDownList)
For i  = 0 To 10
ddl.Items.Add(New ListItem(i, i))
Next
End If
End Sub
y en el datagrid he declarado lo siguiente :

Código:
 
<asp:DataGrid id="dgProducts" runat="server" Width="500px" 
AutoGenerateColumns="False" CellPadding="4" OnEditCommand="dgProducts_Edit" 
OnUpdateCommand="dgProducts_Update" OnCancelCommand="dgProducts_Cancel" 
OnDeleteCommand="dgProducts_Delete" showFooter="True" PageSize="5" 
DataKeyField="idSubmenu" ItemDataBound="DataGrid1_ItemDataBound">
Ahora no me dá error pero tampoco me rellena el dropdown....
Que estoy haciendo mal?
Aparte de esto la linea:

Código:
If e.Item.ItemType = ListItemType.Item 
Or e.Item.ItemType = ListItemType.AlternatingItem Then
no sé su significado ......
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #4 (permalink)  
Antiguo 10/08/2006, 07:29
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
te falta asociarle el evento a tu datagrid... quedaría así:

Cita:
Private Sub dgProducts_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgProducts.ItemDataBound
....
....
  #5 (permalink)  
Antiguo 11/08/2006, 01:01
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 21 años, 5 meses
Puntos: 0
perdona mi insistencia,
lo que me dices fue lo primero que probé pero me da el error:

BC30506: La cláusula Handles requiere una variable WithEvents

Estoy programando en asp.net con el programa web matrix.....
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #6 (permalink)  
Antiguo 06/02/2008, 14:44
Avatar de CieloEterno  
Fecha de Ingreso: marzo-2006
Ubicación: México
Mensajes: 52
Antigüedad: 19 años
Puntos: 0
De acuerdo Gracias

Hola, muchas gracias; tú codigo me sirvio mucho RootK
__________________
Aquel que no tiene nada por lo cual morir, no tiene nada por que vivir
  #7 (permalink)  
Antiguo 09/05/2008, 10:11
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Error al rellenar Dropdownlist de un datagrid

hai yono tengo problemas con el llenado del combo yo tengo un problema al tratar de capturar el valor seleccionado no se si podrian aconsejar como hacerle para capturar el valor seleccionado
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 14:16.