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

[SOLUCIONADO] Pasar datos de grilla

Estas en el tema de Pasar datos de grilla en el foro de .NET en Foros del Web. Buenas noches, les comento tengo un problema al pasar datos por javascript tengo un GridView la cual tiene un itemtemplate con un linkbutton al hacer ...
  #1 (permalink)  
Antiguo 23/09/2013, 18:34
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Pasar datos de grilla

Buenas noches, les comento tengo un problema al pasar datos por javascript
tengo un GridView la cual tiene un itemtemplate con un linkbutton al hacer click para seleccionar la fila abro una nueva pestaña. El problema es que no se como pasar por javascript a la pagina que recibiria el Id. Ayuda..!?
Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 24/09/2013, 13:01
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Si te entendi lo que quieres es pasar el Id como parametro a otra pagina'
Simplemente hazlo asi:

Si en el item template has utilizado el atributo o propiedad CommandName="Nombre_del_comando" basta con crear el metodo:

Protected Sub GridView_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView.RowCommand

'Verificar cual item template fue el que se acciono ese commandName es el que especificaste como atributo en el itemtemplate, el nombre que tu le diste
If e.CommandName = "Nombre_del_comando" Then

'aca envias a la otra pagina tal y como lo estas haciendo a diferencia que pasas el id como parametro:

windows.open('http://urlqueapuntalaotrapagina.aspx?id=" + Me.GridView.Rows(e.CommandArgument).Cells(1).Text +"')
'donde e.CommandArguments es el selectedIndex por decirlo asi y Cells(1) es la celda uno que en mi caso alli tengo el Id, en tu caso puede ser otra.


End If

End Sub

Espero que te haya sido util
  #3 (permalink)  
Antiguo 24/09/2013, 16:07
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Si eso quiero hacer pasar el id como parametro a otra pagina.

Estoy programando en C#, al windows.open lo haces en un script?
La verdad la idea es lo que comentaste pero no entiendo muy bien de la forma en que lo estas implementando tampoco se si seria igual en VB o C#. Idea?
Gracias julioc6969.
  #4 (permalink)  
Antiguo 25/09/2013, 07:45
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
De acuerdo Respuesta: Pasar datos de grilla

En tu aspx debes de tener un item template asi imagino yo:

<asp:TemplateField Visible="true" HeaderText="">
<ItemTemplate>
<asp:ImageButton CommandName="Revisar" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" ID="imbtn_actuacion_revisada" runat="server" ImageUrl="~/Imagenes/Iconos/Check.jpg" Height="17px" Width="17px" />
</ItemTemplate>
</asp:TemplateField>

Si te fijas el commandName es el que te indicara cual sera el boton que se presionó, luego tu para capturarlo tienes que ir al Code Behind y capturarlo con el metodo:

Protected Sub GridView_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView.RowCommand

'Verificar cual item template fue el que se acciono ese commandName es el que especificaste como atributo en el itemtemplate, el nombre que tu le diste
If e.CommandName = "Revisar" Then

'aca envias a la otra pagina tal y como lo estas haciendo a diferencia que pasas el id como parametro, obteniendolo de la siguiente manera:
'obtenlo en string y luego haces el parse para integer en la pagina que lo recibiras
Dim varibleId as String=Me.GridView.Rows(e.CommandArgument).Cells(1 ).Text

Response.Write("<script>window.open('wf_pagina_nue va.aspx?id="+variableId+"','PaginaNueva','resizabl e=yes,toolbar=no,scrollbars=yes');</script>")
'donde e.CommandArguments es el selectedIndex por decirlo asi y Cells(1) es la celda uno que en mi caso alli tengo el Id, en tu caso puede ser otra.


End If

End Sub

De esta manera podrias enviar como parametro el id capturado con el itemTemplate, espero que me hayas entendido, sino cualquier cosa pregunta :) , igual las disculpas del caso si hay algun error de dedo por alli o de prog
para adaptarlo a C# es facil, para crear el evento buscalo y añadelo tu, para no estar luchando para ver como sera la declaracion y toda la cosa, cambia la declaracion de la variable y prueba el response.write.

Saludos
  #5 (permalink)  
Antiguo 25/09/2013, 17:02
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Me esta dando "El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro: index" justo donde paso el commandArgument te muestro mi codigo
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Seleccionar")
{
int index = Convert.ToInt32(e.CommandArgument);
int id = Convert.ToInt32(gvAutos.Rows[index].Cells[1].Text);
Response.Write("<script>window.open('User/pagina.aspx?Id=" + id+ "');</script>");
}
}

Y en mi aspx si tengo el template cn un linkbutton.
  #6 (permalink)  
Antiguo 25/09/2013, 21:50
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Muestrame el codigo aspx donde tienes el itemtemplate??
Creo que por alli debe ir el error.
  #7 (permalink)  
Antiguo 26/09/2013, 16:03
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkSelec" Text="Seleccionar" runat="server" CommandName="Seleccionar" CommandArgument='<%# Eval("ID") %>'>
</asp:LinkButton>
</ItemTemplate>

de esta forma tomo el id..
  #8 (permalink)  
Antiguo 27/09/2013, 07:32
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Recuerda que trabajando de esta manera, lo que tienes que pasar en el commandArgument es el RowIndex, no el ID. Intenta poner el CommandArgument de alguna de estas dos maneras:

CommandArgument='<%# Container.DataItemIndex %>'


O solucion Microsoft:
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"


Aca esta una referencia por si quieres consultarla, espero que te haya servido de ayuda



http://msdn.microsoft.com/en-us/library/bb907626.aspx#Y800
  #9 (permalink)  
Antiguo 28/09/2013, 08:58
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Amigo pasando con la solucion de microsoft me da un error de script "Error en tiempo de ejecución de JavaScript: Sys.WebForms.PageRequestManagerParserErrorExceptio n: The message received from the server could not be parsed." el cual estoy buscando en internet pero sigo sin entender el problema de esta exepcion.
De la forma que paso con el rowindex pasaria el indice de la fila que seleccione? y no el Id del articulo cierto? Si es asi no seria la solucion a lo que necesito ya que para pasar a la nueva pestaña necesitaria el Id del articulo para realizar una consulta.

Algo que este haciendo mal o q no alla entendido bien?
Gracias por tu tiempo y ayuda de todos modos.
  #10 (permalink)  
Antiguo 29/09/2013, 22:29
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Explicandote un poco mejor, le pasamos el indice al argument, para q puedas saber a que fila le diste clic con el itemTemplate, para luego con ese indice, buscar cualquier dato que necesites de la fila cliqueada, en este caso el id. Ese error si no me equivoco, te puede estar dando debido a que hacemos uso del response y el grid esta dentro de un UpdatePanel me imagino? Esto lo resuelves con agregar un postback trigger al update panel, apuntando al itemTemplate. O al grid completo.
Lo puedes hacer en modo diseno, en las propiedades del UpdatePanel.
Cualquier cosa pregunta de nuevo, estamos aqui para ayudarnos.

Julio
  #11 (permalink)  
Antiguo 01/10/2013, 17:17
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Funciono lo anterior pero al momento de pasar a la otra pagina me da otro error de javascript con el que estoy renegando
"Error en tiempo de ejecución de JavaScript: Sys.ArgumentException: An element with id 'form1' could not be found.
Parameter name: elementOrElementId"

Tendras alguna idea de esto? Lo unico que se me ocurre que no reconoce el nombre form1 de la masterPage..
  #12 (permalink)  
Antiguo 01/10/2013, 21:35
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Verifica, eso tiene que estar pasando, a lo mejor estas haciendo un getElementById y no existe ningun elemento con ese id. La verdad tendria que ver el codigo para poder ayudar. Revisa despacio, ha de ser algun error simple.
  #13 (permalink)  
Antiguo 02/10/2013, 16:26
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Mmm no tengo ningun getElementaryById.. El form1 en que da error es del masterPage lo probe en otro proyecto sin masterPage y da el mismo error en el form1.. Sigo revisando el codigo.. Si se te ocurre algo seria de ayuda cm hasta ahora.. Gracias.!
  #14 (permalink)  
Antiguo 02/10/2013, 21:21
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

Verifica que todas las aperturas y cierres de las etiquetas esten correctas.
Virifica que esten con la pleca donde corresponde, es decir:
<script></script> y no <script><script/> ya que eso podria generarte dicho error
  #15 (permalink)  
Antiguo 03/10/2013, 15:53
 
Fecha de Ingreso: noviembre-2012
Mensajes: 15
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pasar datos de grilla

Listo amigo muchas gracias efectivamente era eso.. despues de tantas vueltas se ve que se me paso y lo saque sin querer.. Gracias
  #16 (permalink)  
Antiguo 06/10/2013, 09:44
 
Fecha de Ingreso: enero-2012
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Pasar datos de grilla

De nada amigo, que bueno que solucionaste el problema.
Cualquier otra duda estamos para ayudarnos.
Feliz dia

Julio

Etiquetas: c#
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 03:06.