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

recoger valor de columna ID y ejecutar evento en boton de gridview

Estas en el tema de recoger valor de columna ID y ejecutar evento en boton de gridview en el foro de ASPX (.net) en Foros del Web. hola tengo un gridview: deseo lograr lo siguiente: cuando haga click en la imagen que parece una lupa vaya a la pagina de detalle del ...
  #1 (permalink)  
Antiguo 03/01/2010, 23:04
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años
Puntos: 4
recoger valor de columna ID y ejecutar evento en boton de gridview

hola tengo un gridview:



deseo lograr lo siguiente:
cuando haga click en la imagen que parece una lupa vaya a la pagina de detalle del vehiculo (Mostrar.aspx), pero quisiera recoger la primera columna del grid que no esta visible y que es el id, para anidar el link que seria asi (Mostrar.aspx?Id=)
como lograria hacerlo, tiene que estar visible la columna id, como obtengo ese valor ¿como selecciono una fila?
saludos, espero cumplir con este trabajo de la Universidad;
__________________
Soluciones basadas en .NET Framework y SQL Server
  #2 (permalink)  
Antiguo 03/01/2010, 23:34
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 3 meses
Puntos: 31
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

Muy chulo el gridview de coches. Lo puedes hacer de dos formas.

Esta primera forma lo puedes hacer creandote un Label visible que sea false y recoges el valor, cuando hagas click sobre la lupa.

Te pongo un ejemplo.

Código:
<asp:GridView ID="MiGridViewCoches" runat="server" >

<Columns>

<asp:TemplateField HeaderText=""

ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label ID="LblCoche" runat="server" Text='<%# Eval("IdMarca") %>' Visible="False" ></asp:Label>

</ItemTemplate>

<HeaderStyle HorizontalAlign="Center"></HeaderStyle>

<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText=" "

ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:ImageButton runat="server" ID="ImgLupa" ImageUrl="~/Lupa.png" Width="26px"  CommandName="image" OnClick="ClickLupa" ToolTip="Ver Marca" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>

<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>


</asp:GridView>

Y el CodeBehind sería así:

Código:
    protected void ClickLupa (object sender, EventArgs e)
    {
        
        ImageButton imageButton = (ImageButton)sender;
        TableCell tableCell = (TableCell)imageButton.Parent;
        GridViewRow row = (GridViewRow)tableCell.Parent;
        MiGridViewCoches.SelectedIndex = row.RowIndex;
        int fila = row.RowIndex;


        string IdRecogido = ((Label)row.Cells[fila].FindControl("LblCoche")).Text;

Response.Redirect("Mostrar.aspx?Id="+IdRecogido)


    }
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo

Última edición por triqui; 03/01/2010 a las 23:42
  #3 (permalink)  
Antiguo 03/01/2010, 23:37
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 3 meses
Puntos: 31
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

Otra Forma Sería sin necesidad de codebehind y sin crearte un label donde recoges el Id, directamente pones el valor que necesites en el gridview, si vas a utilizar ir a otra pantalla utiliza esta, si vas a utilizar ajax, y vas a mostrar los resultados en la misma pantalla utiliza la anterior.

Sería Así:

Código:
<asp:GridView ID="GvQuinielasUsuario" runat="server" >

<Columns>


<asp:TemplateField HeaderText=" "

ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:ImageButton runat="server" ID="imageButton" ImageUrl="~/Lupa.png"
 Width="26px"  
PostBackUrl='<%# DataBinder.Eval(Container, "DataItem.IdMarca").ToString() %>' 
ToolTip="Ver Marca" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>

<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>


</asp:GridView>

Suerte !
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo
  #4 (permalink)  
Antiguo 04/01/2010, 08:20
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años
Puntos: 4
Pregunta Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

hola, gracias por tu ayuda, logre redireccionar, pero ahora el problema es que el gridview no pagina a 10 items , e usado el panel de propiedades y nofunciona
este es el codigo de mi pagina:


Cita:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Página sin título</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" DataSourceID="AccessDataSource1" AutoGenerateColumns="False" DataKeyNames="IdVehiculo" CellPadding="0" OnSelectedIndexChanging="GridView1_SelectedIndexCh anging" PageIndex="5" PageSize="5" >
<Columns>
<asp:BoundField DataField="IdVehiculo" HeaderText="IdVehiculo" InsertVisible="False"
ReadOnly="True" SortExpression="IdVehiculo" Visible="False" />
<asp:BoundField DataField="Marca" HeaderText="Marca" SortExpression="Marca" />
<asp:BoundField DataField="Modelo" HeaderText="Modelo" SortExpression="Modelo" />
<asp:BoundField DataField="Color" HeaderText="Color" SortExpression="Color" />
<asp:BoundField DataField="Año" HeaderText="Año" SortExpression="Año" />
<asp:BoundField DataField="Kilometraje" HeaderText="Kilometraje" SortExpression="Kilometraje" />
<asp:TemplateField HeaderText=" " >
<ItemTemplate>
<asp:ImageButton runat="server" ID="imageButton" ImageUrl="imagenes/Camera.png"
Width="26px"
PostBackUrl='<%# Page.ResolveUrl("Mostrar.aspx?id=") + DataBinder.Eval(Container.DataItem, "IdVehiculo" )%>'
ToolTip="Ver Marca" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>

</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Db.mdb"
SelectCommand="SELECT [IdVehiculo], [Marca], [Modelo], [Color], [Año], [transmision], [motor], [combustible], [cilindros], [Comentarios], [Kilometraje], [Categoria] FROM [Vehiculos] WHERE ([Categoria] = ?) ORDER BY [IdVehiculo]">
<SelectParameters>
<asp:Parameter DefaultValue="Autos" Name="Categoria" Type="String" />
</SelectParameters>
</asp:AccessDataSource>

</div>
</form>
</body>
</html>
__________________
Soluciones basadas en .NET Framework y SQL Server
  #5 (permalink)  
Antiguo 04/01/2010, 16:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 14
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

Mira Yo Te Doy Una Mejor respuesta......


Esto es la parte del Html


<asp:GridView id="dgDatos" runat="server" Width="100%" OnPageIndexChanging="dgDatos_PageIndexChanging" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="COD_ACTA_TOLERANCIA" OnRowDataBound="dgDatos_RowDataBound" OnRowCommand="dgDatos_RowCommand" PageSize="20">
<RowStyle CssClass="gridItemGroup"></RowStyle>
<Columns>
<asp:TemplateField><ItemTemplate>
<asp:Label ID="fila" runat="server" Text='<% # Container.DataItemIndex + 1 %>'></asp:Label>

</ItemTemplate>

<ItemStyle HorizontalAlign="Right" Width="15px"></ItemStyle>
</asp:TemplateField>
<asp:BoundField DataField="NUMERO_ACTA" HeaderText="NRO. ACTA">
<ItemStyle HorizontalAlign="Center" Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="FECHA_ACTA" HeaderText="F. ACTA">
<ItemStyle HorizontalAlign="Center" Width="90px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NOMBRE_TIPO_SERVICIO" HeaderText="T. SERVICIO">
<ItemStyle HorizontalAlign="Center" Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="PLACA_RODAJE" HeaderText="PLACA">
<ItemStyle HorizontalAlign="Center" Width="90px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NOMBRE_REGION_CTL" HeaderText="REGION">
<ItemStyle HorizontalAlign="Center" Width="120px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NOMBRE_PUNTO_CTL" HeaderText="LUGAR">
<ItemStyle HorizontalAlign="Center" Width="130px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NRO_EXPEDIENTE" HeaderText="NRO. EXPEDIENTE">
<ItemStyle HorizontalAlign="Center" Width="120px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="USUARIO_LOG" HeaderText="USUARIO">
<ItemStyle HorizontalAlign="Center" Width="120px"></ItemStyle>
</asp:BoundField>
<asp:TemplateField><ItemTemplate>
<asp:ImageButton ID="ImbAsignarPerfil" runat="server" CommandArgument='<% # Container.DataItemIndex %>'
CommandName="Act" ImageUrl="~/Imagen/btnVer.gif" ToolTip="Ver Detalle" />

</ItemTemplate>

<ItemStyle HorizontalAlign="Center" Width="13px"></ItemStyle>
</asp:TemplateField>
</Columns>
<PagerTemplate>
<TABLE style="WIDTH: 100%" cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD style="WIDTH: 50%" align=left><asp:Label id="lblTotal" runat="server" CssClass="pagina"></asp:Label></TD><TD style="WIDTH: 50%" align=right>&nbsp;<asp:Label id="lblPagina" runat="server" CssClass="pagina"></asp:Label>&nbsp; <asp:Button id="Button4" runat="server" CssClass="primero" ToolTip="Prim. Pág" CommandArgument="First" CommandName="Page"></asp:Button>&nbsp;<asp:Button id="Button1" runat="server" CssClass="anterior" ToolTip="Pág. anterior" CommandArgument="Prev" CommandName="Page"></asp:Button>&nbsp;<asp:Button id="Button2" runat="server" CssClass="siguiente" ToolTip="Sig. página" CommandArgument="Next" CommandName="Page"></asp:Button>&nbsp;<asp:Button id="Button3" runat="server" CssClass="ultimo" ToolTip="Últ. Pág" CommandArgument="Last" CommandName="Page"></asp:Button></TD></TR></TBODY></TABLE>
</PagerTemplate>

<PagerStyle CssClass="gridPage"></PagerStyle>
<EmptyDataTemplate>
<asp:Label ID="vacio" runat="server" Font-Names='Arial' Font-Size='8pt' Text='NO SE ENCONTRARON RESULTADOS'></asp:Label>
</EmptyDataTemplate>

<SelectedRowStyle CssClass="selectedItem"></SelectedRowStyle>

<HeaderStyle CssClass="gridHead"></HeaderStyle>
</asp:GridView>



Luego Te Pongo los Eventos


protected void dgDatos_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName.Equals("Act"))
{
#region "ObtenerPágina"

Int32 index = Convert.ToInt32(e.CommandArgument);
GridViewRow row;
if (dgDatos.PageIndex == 0)
{
row = dgDatos.Rows[index];
}
else
{
Int32 totalPag = Convert.ToInt32(dgDatos.PageCount);
Int32 itemActl = (totalPag - (totalPag - Convert.ToInt32(dgDatos.PageIndex))) * Convert.ToInt32(dgDatos.PageSize);
row = dgDatos.Rows[index - itemActl];
}
DataKey key = dgDatos.DataKeys[row.RowIndex];

#endregion

//Aqui recuperas tu id y lo mandas hacia tu metodo que quieres llenar o al //response redirect tbn puede ser en esta caso es un método

LlenarDetalle(Convert.ToInt32(key.Value));
}
}
catch (ManagerException)
{
ShowErrorMessage();
}
catch (Exception ex)
{
lblError.Text = ex.Message;
Publish(ex, String.Empty);
ShowErrorMessage();
}
}


y Luego el evento de la paginacion



protected void dgDatos_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
if (e.NewPageIndex != -1)
{
lblEspacio.Text = "";
//PAGINAMOS EL GRIDVIEW
dgDatos.PageIndex = e.NewPageIndex;
//
dgDatos.DataSource="tu datatable";
dgDatos.DataBind();

}
}
catch (ManagerException)
{
ShowErrorMessage();
}
catch (Exception ex)
{
lblError.Text = ex.Message;
Publish(ex, String.Empty);
ShowErrorMessage();
}
}
  #6 (permalink)  
Antiguo 04/01/2010, 19:21
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años
Puntos: 4
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

Muchas gracias amigo, hoy cumpli con el trabajo, saludos
__________________
Soluciones basadas en .NET Framework y SQL Server
  #7 (permalink)  
Antiguo 19/08/2010, 22:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

hola robertgustavo esta muy bonito ese gridview si no fuera mucha molestia me gustaria q me expliques como hisiste eso aplicaste estilos o algo asi y si puedes un ejemplo seria de mucha ayuda, de antemano gracias..
  #8 (permalink)  
Antiguo 20/08/2010, 20:47
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años
Puntos: 4
Respuesta: recoger valor de columna ID y ejecutar evento en boton de gridview

Bueno, no hay nada de novedoso, solo es un gridview que esta dentro de una celda de una tabla y que esta bien alineado con las imagenes que muestran el titulo de la columna y para que esa celda no se mueva, lo estoy paginando a determinados elementos. saludos
__________________
Soluciones basadas en .NET Framework y SQL Server

Etiquetas: columna, ejecutar, gridview, recoger, botones, eventos, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:38.