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

Data Grid, No puedo creer que esto sea asi!!

Estas en el tema de Data Grid, No puedo creer que esto sea asi!! en el foro de .NET en Foros del Web. Hola a todos, les tengo una pregunta de un problemita que me viene trayendo de los pelos hace rato, que la fui solucionando de una ...
  #1 (permalink)  
Antiguo 23/02/2005, 03:36
 
Fecha de Ingreso: septiembre-2004
Mensajes: 19
Antigüedad: 19 años, 8 meses
Puntos: 0
Data Grid, No puedo creer que esto sea asi!!

Hola a todos, les tengo una pregunta de un problemita que me viene trayendo de los pelos hace rato, que la fui solucionando de una manera pero definitivamente me volvio loco.

EL asunto es que yo tengo un dataGrid el cual todas las columnas son de tipo "Columna Plantilla" con su Label correspondiente; mas una que de tipo "Columna Boton" mas especificamente "Seleccionar"

Para completa el dataGrid leo un dataSet y se lo asigno a la propiedad DataSource del mismo y cuando hago el ItemDataBound le asigno cada valor del dataSet a las columnas plantilla correspondiente.

Cuando apreto seleccionar me hace unas funciones que yo le indico.

Ahora bien lo gracioso es que si yo al finalizar de hacer esas funciones no refresco la pantalla, pierdo la informacion de la fila que seleccione y por ende no puedo volver a a seleccionar, debido a que si lo hago, no encuentra los valores de las columnas planitalla y me da un error.

La pregunta del millon, hay alguna manera de solucionar esto???? Por favor si no fui claro avisenme ya que prefiero que alguien me entienda para poder darme una mano.

Muchas gracias por las molestias ocasionadas.
  #2 (permalink)  
Antiguo 23/02/2005, 07:38
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola

seguramente te falta validar el postback (ispostback=false) en el load, esto es que se cargue tu grid solo una vez al inicio desde el load, para que cuando se produzca el refresco de la pagina no pierdas el enlace de los datos de tu datagrid



Saludos

Última edición por splinter; 23/02/2005 a las 07:39
  #3 (permalink)  
Antiguo 23/02/2005, 10:51
 
Fecha de Ingreso: septiembre-2004
Mensajes: 19
Antigüedad: 19 años, 8 meses
Puntos: 0
Gracias por la respuesta pero soy un poco novato en esto, me podrias ayudar con un poco de codigo, ya que ya tengo al prinicpio de la pagina la opcion

if not page.ispostback then
'Aqui realizo todas las consultas y completo_
el formulario con la informacion necesaria
endif

La idea es que se refresque el dataGrid y no la pagina. Es posible????? Porque si refresco toda la pagina me vuelve a cargar informacion que no quiero y si no refresco el dataGrid pierdo la información de los Labels que contiene el dataGrid en cada columna.

Última edición por etche; 23/02/2005 a las 11:58
  #4 (permalink)  
Antiguo 23/02/2005, 12:47
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Recuerda que cada vez que haces un edit, update, etc de tu grid debes generar nuevamente el Binding del control..

Es decir cuando estas en modo edicion, haces algo como ésto:

Cita:
Private Sub dgScripts_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgScripts.EditCommand
dgScripts.EditItemIndex = e.Item.ItemIndex
'Aqui debes volver a llenar tu datagrid, es por eso que se recomienda tener un metodo para estarlo llamando cada vez que sea necesario
BindDataGrid()
End Sub

Por cierto, como dice splinter, verifica que en tu Page_Load no estes cargando nuevamente tu datagrid, solo la primera vez (si es necesario)

Espero haber sido claro.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 23/02/2005, 16:00
 
Fecha de Ingreso: septiembre-2004
Mensajes: 19
Antigüedad: 19 años, 8 meses
Puntos: 0
Originalmente Escrito por etche
Hice lo que me dijiste y ahora no solamente que me borrar la información que contiene en los Labels de la fila que seleccione sino que en la columna Boton "Editar" que tengo me cambia el texto por "Actualizar - Cancelar"

Asi tengo configurado el dataGrid
<TD><asp:datagrid id="dgJugadores" runat="server" Font-Names="Tahoma" ForeColor="DimGray" Font-Size="X-Small" Width="445px" GridLines="Horizontal" BorderColor="White" AutoGenerateColumns="False"> <Columns> <asp:TemplateColumn HeaderText="MATR Nº"> <ItemTemplate><asp:Label id="lblMatriculaNro" runat="server"></asp:Label></ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="JUGADOR">
<ItemTemplate><asp:Label id="lblJugador" runat="server"></asp:Label></ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="HCP"> <ItemTemplate><asp:Label id="lblHCPSTD" runat="server"></asp:Label></ItemTemplate> </asp:TemplateColumn> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Actualizar" CancelText="Cancelar" EditText="AGREGAR">
<ItemStyle Font-Size="XX-Small" HorizontalAlign="Center"></ItemStyle> </asp:EditCommandColumn>
</Columns> </asp:datagrid></TD>

Para generar la consulta hago lo siguiente.
'Habro la conexion
oSQLConn.Conectar(strPath)
dsJugadores = _ oSQLConn.getDataSet_Jugadores(Me.txtContenido.Text & "%", "A", "ju_matr", "ju_estado")
'Cuento la cantidad de registro
contReg = dsJugadores.Tables("JUGADORES").Rows.Count
'Lleno la grilla
Me.dgJugadores.DataSource = _ Me.dsJugadores.Tables("JUGADORES")
Me.dgJugadores.DataBind()
'Cierro la conexion
oSQLConn.Desconectar()

Y para asignar los valores adecuados al dataGrid utilizo el ItemDataBoun con este codigo


Select Case e.Item.ItemType
Case ListItemType.AlternatingItem, ListItemType.Item
fila = contReg - (contReg - pos)
pos = pos + 1
CType(e.Item.FindControl("lblMatriculaNro"),Label) .Text= dsJugadores.Tables("JUGADORES").Rows(fila).Item("j u_matr")
CType(e.Item.FindControl("lblJugador"), Label).Text = dsJugadores.Tables("JUGADORES").Rows(fila).Item("j u_nyap")
CType(e.Item.FindControl("lblHCPSTD"), Label).Text = dsJugadores.Tables("JUGADORES").Rows(fila).Item("j h_hcp_std")
End Select

Ya no se que mas hacer, la solucion que me pasaste estuve intentando hacerla de mil manera pero no consigo dar con la solucion. Tal vez arranque mal desde el comienzo pero la verdad que ya no se que hacer, si tienes algun codigo que me sirva y me lo puedas pasar MIL GRACIASSSSSSSS

Y mil gracias igualmente capo, yo que debe ser complicado saber generalmente todas las soluciones, jajajajaja
  #6 (permalink)  
Antiguo 23/02/2005, 16:10
 
Fecha de Ingreso: septiembre-2004
Mensajes: 19
Antigüedad: 19 años, 8 meses
Puntos: 0
Gente, ya logre solucionar el problema, gracias Rootk la idea que me pases era la correcta nada mas que la linea

dgJugadores.EditItemIndex = e.Item.ItemIndex

La tuve que cambiar por la siguiente

dgJugadores.EditItemIndex=CType(e.Item.Cells(0).Fi ndControl("lblMatriculaNro"), Label).Text

Y ASI FUNCIONO PERFECTO!!!!!!!!

Bueno mil disculpas por las molestias ocasionadas!!!

Seguramente nos veremos prontooooo, chiaooooooo
  #7 (permalink)  
Antiguo 24/02/2005, 09:06
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Cita:
Bueno mil disculpas por las molestias ocasionadas!!!
No son molestias friend, creo que todos los de aqui de alguna u otra forma siempre tratamos de ayudarnos para aprender cada día mas..

see ya
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 07:14.