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

Recoger elvalor de un TexBox en un DataGrid

Estas en el tema de Recoger elvalor de un TexBox en un DataGrid en el foro de ASPX (.net) en Foros del Web. Hola, Llevo unos dias rompiendome la cabeza porqué no consigo recoger el valor modificado sobre un textbox de una fila de un datagrid. Para explicarme ...
  #1 (permalink)  
Antiguo 16/10/2006, 09:46
 
Fecha de Ingreso: octubre-2006
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Recoger elvalor de un TexBox en un DataGrid

Hola,
Llevo unos dias rompiendome la cabeza porqué no consigo recoger el valor modificado sobre un textbox de una fila de un datagrid.
Para explicarme mejor, he hecho un carrito de la compra donde muestro mediante un datagrid la referencia del producto, el nombre, el precio, y finalmente en un textbox, las cantidades de ese producto que deseo comprar, que por defecto se visualiza '1'.
A continuación he generado una <ButtonColumn>, para que despues de introducir una nueva cantidad, presionar sobre el boto actualizar, y esta ir a la función correspondiente de actualizar el dato de esa fila, mediante un ItemComand.
Lo que pasa es que va todo estupedamente, recojo la fila que quiero, pero sin embargo, nunca consigo recoger el nuevo dato introducido en el textbox. Siempre me muestra '1'.
Lo he probado todo, y lo último en que se me ha quedado es lo siguiente:

//********************************************
Private Sub dgCarro_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgCarro.ItemCommand

Dim mitxtBox As Web.UI.WebControls.TextBox

miTabla = Session("micarro")

Try

mitxtBox = CType(e.Item.FindControl("textCuantos"), Web.UI.WebControls.TextBox)

miFila = miTabla.Rows(CInt(e.Item.ItemIndex))
miFila.BeginEdit()
miFila("Cantidad") = CInt(mitxtBox.Text.Trim)
miFila.EndEdit()
Session("micarro") = miTabla

Catch exc As Exception
ProcessModuleLoadException(Me, exc)
End Try

End Sub
//*************************************************

Mi duda es que 'mitextbox' siempre recoge '1'. Todo el resto va bien. si pusiera manualment '8' p.ej si que se modifica en el DataTable que es en lo que estoy trabajando.
'textCuantos' es el texbox que muestro en el datagrid y con el que recojo (o al menos intento) el valor.
También quiero preguntar si influye en algo, poner este 'texCuantos' en una columna <ItemTemplate> en el datagrid, o <EditItemTemplate>. Que propiedades diferentes adquiere cada?

Bueno, eso es todo, espero que me haya explicado bien.
Muchas gracias si me conseguis ayudarme. Me estoy volviendo loco ya.
Un saludo.
  #2 (permalink)  
Antiguo 01/11/2006, 19:21
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 7 meses
Puntos: 1
ayudita

Mira la verdad yo tambien tuve ese problema con el ItemCommand en 2003 y ahora estoy trabajando en 2005, no se si en el DataGrid 2003 tambien tenga algun evento para los ItemUpdating pero aqui te paso como lo hago yo en 2005 y el GridView, cualquier cosita a [email protected], [email protected]

aspx

<asp:GridView runat="server" ID="gvcarrito" AutoGenerateColumns="false">
<RowStyle CssClass="row_items" />
<HeaderStyle CssClass="header" />
<AlternatingRowStyle CssClass="alter_items" />
<Columns>
<asp:BoundField DataField="codigo" HeaderText="codigo" />
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox runat="server" ID="txtcant" Text='<%#Container.DataItem("cantidad") %>'
CssClass="row_items" Width="30" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" ID="btn" Text="Act" CommandName="update" CssClass="alter_items" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>



CodeFile

Imports System.Data
Partial Class Default5
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As DataTable

If Not Session("dtcarrito") Is Nothing Then
dt = CType(Session("dtcarrito"), DataTable)
Else
dt = New DataTable
dt.Columns.Add("codigo")
dt.Columns.Add("cantidad")
End If

dt.Rows.Add(New Object() {TextBox1.Text, TextBox2.Text})

gvcarrito.DataSource = dt
gvcarrito.DataBind()

Session("dtcarrito") = dt
End Sub

Protected Sub gvcarrito_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvcarrito.RowUpdating
Dim item As GridViewRow = CType(gvcarrito.Rows(e.RowIndex), GridViewRow)
Dim txt As TextBox = CType(item.FindControl("txtcant"), TextBox)

Dim dt As DataTable

dt = CType(Session("dtcarrito"), DataTable)

dt.Rows(e.RowIndex)("cantidad") = txt.Text
dt.AcceptChanges()

gvcarrito.DataSource = dt
gvcarrito.DataBind()

Session("dtcarrito") = dt
End Sub
End Class
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 05:51.