Principales respuestas
seleccionar datos de un gridview para usarlos con un link button

Pregunta
-
Buenas tardes, nesesito ayuda lo que pasa es que tengo un grid view y cargo los datos pero a la ves que se cree un linkbutton y que saque los datos de dos de sus columnas pero de la fila en la que se encuentra el linkbutton por que necesito esos datos para crear un redirect con esos mismos datos ya intente de varias formas pero no lo he logrado.
Este es el codigo que tengo asi ya puedo generar la liga pero el problema es que al dar clik en el link siempre toma el valor de la ultima fila y lo que quiero es tomar el valor de la fila en la que esta el linkbutton
Si me pueden ayudar se los agradeseria muchisimo!!
<asp:GridView ID="parcialidadesGridView" runat="server" Font-Size="13px" AutoGenerateColumns="False" ondatabound="parcialidadesGridView_DataBound"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" > <ItemStyle HorizontalAlign="Center" Width="40px" /> </asp:BoundField> <asp:BoundField DataField="Forma de pago" HeaderText="Forma de pago" > <ItemStyle Width="130px" Font-Overline="False" HorizontalAlign="Center" /> </asp:BoundField> <asp:BoundField DataField="Fecha acuerdo de pago" HeaderText="Fecha acuerdo de pago" DataFormatString="{0:d}"> <ItemStyle HorizontalAlign="Center" Width="100px" /> </asp:BoundField> <asp:BoundField DataField="Cantidad" HeaderText="Cantidad"> <ItemStyle HorizontalAlign="Center" Width="80px" /> </asp:BoundField> <asp:BoundField DataField="Fecha de pago" HeaderText="Fecha de pago" DataFormatString="{0:d}" NullDisplayText="--"> <ItemStyle HorizontalAlign="Center" Width="80px" /> </asp:BoundField> <asp:BoundField DataField="Observaciones" HeaderText="Observaciones"> <ItemStyle HorizontalAlign="Center" Width="200px" /> </asp:BoundField> <asp:BoundField DataField="Status" HeaderText="Status"> <ItemStyle HorizontalAlign="Center" Width="70px" /> </asp:BoundField> <asp:TemplateField> <ItemTemplate> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
protected override void OnInit(EventArgs e) { base.OnInit(e); } private void AddLinkButton() { foreach (GridViewRow row in parcialidadesGridView.Rows) { if (row.RowType == DataControlRowType.DataRow) { LinkButton lb = new LinkButton(); lb.Text = "Approve"; lb.CommandName = "ApproveVacation"; lb.Command += LinkButton_Command; row.Cells[7].Controls.Add(lb); cantidadDecimal = Convert.ToDecimal(row.Cells[3].Text); idParcialidadCriterioPagoString = row.Cells[0].Text; } } } protected void LinkButton_Command(object sender, CommandEventArgs e) { if (e.CommandName == "ApproveVacation") { LinkButton lb = (LinkButton)sender; lb.Text = "OK"; string url = "monto=" + (cantidadDecimal * 100).ToString("#######0") + "&folio=" + idParcialidadCriterioPagoString + "&actividad=" + claveOfertaString + "-" + idCriterioPagoString; MessageBox.Show(url+"****"+e.ToString(), "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning); Response.Redirect(url); } } protected void parcialidadesGridView_DataBound(object sender, EventArgs e) { AddLinkButton(); }
Respuestas
-
que saque los datos de dos de sus columnas pero de la fila en la que se encuentra el linkbutton por que necesito esos datos para crear un redirect
pero esto no se hace como lo planteas, se utiliza el DataKeyNames, ademas que no se usan los evento del linkbutton, sino que se define un CommandName en el link y se sua el evento RowCommand del propio gridview
aqui
[ASP.NET][GridView] - Como seleccionar una fila
explico como lo harias, veras que es mucho mas simple de como lo estas planteando, se te complica porque la tecnica que estas buscando no es la correcta
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta kAn0 domingo, 30 de junio de 2013 20:56