Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 16-oct-2006, 09:46   #1 (permalink)
anolcue ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
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.
anolcue está desconectado   Responder Citando
Antiguo 01-nov-2006, 18:21   #2 (permalink)
axpicasso ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2006
Mensajes: 47
Enviar un mensaje por MSN a axpicasso Enviar un mensaje por Skype™ a axpicasso
Cool 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 ypicasso@quimicasuiza.com, yoel_picasso@hotmail.com

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
axpicasso está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:10.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93