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

Recoger los valores de la fila a actualizar en un GridView

Estas en el tema de Recoger los valores de la fila a actualizar en un GridView en el foro de .NET en Foros del Web. Hola a tod@s: Trabajo en C# A la hora de recoger los valores de la fila a actualizar, en un DataGrid de la versión anterior ...
  #1 (permalink)  
Antiguo 17/05/2007, 14:41
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Recoger los valores de la fila a actualizar en un GridView

Hola a tod@s:

Trabajo en C#

A la hora de recoger los valores de la fila a actualizar, en un DataGrid de la versión anterior del VisualStudio 2005, dentro del UpdateCommand ponía lo siguiente:

Código:
private void elDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
	...
	string elValor = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
	...
}
estando el valor a cambiar en una caja de texto.

Ahora, en la versión 2005 del VisualStudio para hacer lo mismo en un GridView , dentro de su _RowUpdating, ya lo que he mencionado antes no funciona de la misma manera ó no se captura de esa forma...

Buscando por internet, encontré algo como lo que sigue, detallando que los valores se capturaban según si venían de un BoundField ó de un TemplateField:

Código:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
	...
	//en C#
	//SI LA CAJA DE TEXTO ESTÁ DENTRO DE UN BoundField
	string valorBoundField = GridView1.Rows[index].Cells[column_index].Text;
	//SI LA CAJA DE TEXTO ESTÁ DENTRO DE UN TemplateField
	string valorTemplateField = ((TextBox)(GridView1.Rows[index].FindControl("TextBox_ID"))).Text;
	...
}
Basándome en esto, y usando el evento e del _RowUpdating, finalmente, he puesto esto, considerando que tengo por cada fila dos datos para cada registro (solo uno de ello, el 1º, se activa para poder editarlo y el otro, el 2º, está a ReadOnly=true), y cada uno está en un BoundField:

Código:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
	...
	string valorBoundField = GridView1.Rows[e.RowIndex].Cells[1].Text;
	...
}
Pero me sigue sin capturar el valor deseado. Me llega una cadena vacía.

En mi GridView, en la primera columna están los enlaces de Editar. Eliminar Seleccionar; en la 2ª columna el valor a editar, y en la 3ª el que está con ReadOnly a True.
Lo raro, es que si pongo tanto "Cells[0]" como "Cells[1]", me llega una cadena vacía, y si pongo "Cells[2]" me llega el texto de la caja no editable.

¿¿¿Alguien me podría decir como se captura exactamente los valores a actualizar de una fila del GridVew, en C# y ASP.NET 2.0???
ó ¿¿¿decirme lo que está mal en el código pasado???
__________________
Saludos,

zacktagnan.
=================================================
  #2 (permalink)  
Antiguo 21/05/2007, 07:58
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Recoger los valores de la fila a actualizar en un GridView

Lo que llevo buscando por internet desde que puse esta consulta, no he encontrado algo que me funcione.

¿Nadie me puede decir nada...?
__________________
Saludos,

zacktagnan.
=================================================
  #3 (permalink)  
Antiguo 23/05/2007, 01:09
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Recoger los valores de la fila a actualizar en un GridView

Bueno, he seguido buscando pero no he llegado a encontrar nada que me convenza. Parece que la gente opta por la opción de definir el SqlDataSource y a través de éste realizar las operaciones de actualizar, borrar,... automáticamente, sin tener que insertar nada en la parte de código.

Luego, ¿ni idea de cómo hacer un Update sin definir un SqlDataSource?
__________________
Saludos,

zacktagnan.
=================================================
  #4 (permalink)  
Antiguo 28/05/2007, 03:36
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Recoger los valores de la fila a actualizar en un GridView

Pues nada que no he encontrado la manera idónea de cómo capturar los valores de los campos editables de la fila del GridView a actualizar por código.

Y por el foro tampoco parece que nadie sabe cómo, así que hasta nueva orden tendré que hacerlo exclusivamente por medio de un SqlDataSource...

Si alguien que acceda a este tema, sabe cómo hacer lo demandado sin usar el SqlDataSource le agradecería me lo explicara...
__________________
Saludos,

zacktagnan.
=================================================
  #5 (permalink)  
Antiguo 31/12/2007, 13:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Recoger los valores de la fila a actualizar en un GridView

Yo tengo el mismo prob lema que tú. No me ha dado tiempo a comprobarlo pero puede que la única opción sea usar templatefields en el gridview. He encontrado un par de enlaces en los que se explica cómo conseguir personalizar el gridview y actualizar e insertar datos sin usar sqldatasource.

http://www.elguille.info/colabora/NET2006/gcuadra_GridViewPersonalizando_ParteI.htm
http://www.elguille.info/colabora/NET2006/gcuadra_GridViewPersonalizando_ParteII.htm
  #6 (permalink)  
Antiguo 03/03/2008, 14:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Recoger los valores de la fila a actualizar en un GridView

Bueno en mi chamba yo lo trabajo de esta manera

Codigo c#:
=======

protected void dtgBlocker_RowCommand(object sender, GridViewCommandEventArgs e)
{
string codigo = dtgBlocker.Rows[Convert.ToInt16(e.CommandArgument)].Cells[2].Text;
switch (e.CommandName)
{
case "Eliminar":
Eliminar(codigo);
break;

case "Actualizar":
Response.Redirect("frmCliente.aspx?cod=" + codigo);
break;
}
}

*Donde Cells[Columna que contiene al codigo]
  #7 (permalink)  
Antiguo 03/03/2008, 19:07
 
Fecha de Ingreso: diciembre-2007
Ubicación: Chile
Mensajes: 61
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Recoger los valores de la fila a actualizar en un GridView

Hola,

Asi tengo yo el gridview creado para actualizar filas, pero hago todo manual. y si tienes que crear templatefields.

Código:
<asp:GridView ID="gCitas" runat="server" BackColor="White" 
                                                BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
                                                GridLines="Horizontal" AutoGenerateColumns="False" 
                                                onrowediting="gCitas_RowEditing" DataKeyNames="IDGEN,CIP,FCP" 
                                                onrowupdated="gCitas_RowUpdated" onrowupdating="gCitas_RowUpdating" 
                                                onselectedindexchanged="gCitas_SelectedIndexChanged" 
                                                onrowcancelingedit="gCitas_RowCancelingEdit" Font-Size="Small">
                                                <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" Font-Size="Small" />
                                                <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" Font-Size="Small" />
                                                 <EmptyDataRowStyle Font-Size="Small" />
                                                 <Columns>                                              
                                                    <asp:TemplateField HeaderText="IDGEN" InsertVisible="False" 
                                                        SortExpression="IDGEN" Visible="False">
                                                        <EditItemTemplate>
                                                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("IDGEN") %>'></asp:Label>
                                                        </EditItemTemplate>
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label4" runat="server" Text='<%# Bind("IDGEN") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Cedula" SortExpression="CIP" Visible="False">
                                                        <EditItemTemplate>
                                                            <asp:Label ID="Label2" runat="server" Text='<%# Eval("CIP") %>'></asp:Label>
                                                        </EditItemTemplate>
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label5" runat="server" Text='<%# Bind("CIP") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Fecha Citado" SortExpression="FCP">
                                                        <EditItemTemplate>
                                                        <asp:Label ID="LabelMensaje" runat="server" ForeColor="Red" 
                                                                Text="Por favor seleccione la fecha" Font-Size="Small"></asp:Label>
                                                            <asp:Calendar ID="Calendario" runat="server" BackColor="White" 
                                                                BorderColor="#3366CC" BorderWidth="1px" CellPadding="1" 
                                                                DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" 
                                                                ForeColor="#003399" Height="100px" Width="180px" 
                                                                onselectionchanged="Calendario_SelectionChanged">
                                                                <SelectedDayStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
                                                                <SelectorStyle BackColor="#99CCCC" ForeColor="#336666" />
                                                                <WeekendDayStyle BackColor="#CCCCFF" />
                                                                <TodayDayStyle BackColor="#99CCCC" ForeColor="White" />
                                                                <OtherMonthDayStyle ForeColor="#999999" />
                                                                <NextPrevStyle Font-Size="8pt" ForeColor="#CCCCFF" />
                                                                <DayHeaderStyle BackColor="#99CCCC" ForeColor="#336666" Height="1px" />
                                                                <TitleStyle BackColor="#003399" BorderColor="#3366CC" BorderWidth="1px" 
                                                                    Font-Bold="True" Font-Size="10pt" ForeColor="#CCCCFF" Height="25px" />
                                                            </asp:Calendar>                                                            
                                                            <br />
                                                        </EditItemTemplate>
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("FCP","{0:dd/MM/yyyy}") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Turno" SortExpression="TP">
                                                        <EditItemTemplate>
                                                            <asp:DropDownList ID="TipoTurno" runat="server" 
                                                                SelectedValue='<%# Eval("TP") %>'>
                                                                <asp:ListItem>Mañana</asp:ListItem>
                                                                <asp:ListItem>Tarde</asp:ListItem>
                                                                <asp:ListItem>Todo el dia</asp:ListItem>
                                                            </asp:DropDownList>
                                                        </EditItemTemplate>
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("TP") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Procesado" SortExpression="PCP">
                                                        <EditItemTemplate>
                                                            <asp:DropDownList ID="TextoProcesado" runat="server" 
                                                                SelectedValue='<%# Eval("PCP") %>'>
                                                                <asp:ListItem Value="SI">SI</asp:ListItem>
                                                                <asp:ListItem>NO</asp:ListItem>
                                                            </asp:DropDownList>
                                                        </EditItemTemplate>
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("PCP") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:CommandField ShowEditButton="True" />
                                                </Columns>
                                               
                                                
                                                
                                                
                                                <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
                                                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" 
                                                    Font-Size="Small" />
                                                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" 
                                                    Font-Size="Small" />
                                                <EditRowStyle Font-Size="X-Small" />
                                                <AlternatingRowStyle BackColor="#F7F7F7" />
                                            </asp:GridView>
luego jugar con los eventos:

protected void gCitas_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
protected void gCitas_RowEditing(object sender, GridViewEditEventArgs e)
protected void gCitas_RowUpdating(object sender, GridViewUpdateEventArgs e)
protected void gCitas_SelectedIndexChanged(object sender, EventArgs e)
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 09:45.