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

Editar DataGrid en ASP.Net

Estas en el tema de Editar DataGrid en ASP.Net en el foro de .NET en Foros del Web. Hola a todo mundo, estoy haciendo un app web en asp.net y hago uso de un datagrid para editar los datos de una tabla, el ...
  #1 (permalink)  
Antiguo 19/12/2003, 13:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 2
Antigüedad: 20 años, 4 meses
Puntos: 0
Editar DataGrid en ASP.Net

Hola a todo mundo, estoy haciendo un app web en asp.net y hago uso de un datagrid para editar los datos de una tabla, el problema es que al ejecutar me manda un error de que la asignacion no es valida, al momento de que quiero guardar el dato optenido del control a una variable. el codigo donde me manda el error es el siguiente:

intCve = CType(e.Item.Cells(1).Controls(0), TextBox).Text
strDesc = CType(e.Item.Cells(2).Controls(0), TextBox).Text
strMedida = CType(e.Item.Cells(3).Controls(0), TextBox).Text
intCant = CType(e.Item.Cells(4).Controls(0), TextBox).Text

despues de esto coloco el codigo para editar el dataset, solo que no lo he podido verificar porque de las lineas anteriores NO he podido pasar.

Alguna Idea o segerencia que alguien pueda tener ??????
  #2 (permalink)  
Antiguo 19/12/2003, 14:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Hola.. si en tu datagrid tienes cuadros de texto cuando entras en modo edicion no sería mas fácil si lo haces buscando el nombre del control y lo pasas a una variable..??

Ejemplo

En caso de un String

Cita:
Dim t1 As String = CType(e.Item.FindControl ("textbox1"), TextBox).Text
En caso de un Integer.

Cita:
Dim t1 As Integer = Cint(CType(e.Item.FindControl ("textbox1"), TextBox).Text)
Con éste ejemplo lo que haces es que accesas por medio del ID del control y obtienes la información que necesitas.

Si no es así.. entonces de que manera lo estás haciendo..??


Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 19/12/2003, 14:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 2
Antigüedad: 20 años, 4 meses
Puntos: 0
Pero con que certeza tengo que el ID del control que coloca en modo de edicion se llame TextBox1 ?????

ya que lo hice y me marca el mismo error:

Invalid cast ............
  #4 (permalink)  
Antiguo 19/12/2003, 17:09
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Pero con que certeza tengo que el ID del control que coloca en modo de edicion se llame TextBox1 ?????
Ok... no es de que haya certeza.. lo que pasa es que cuando haces tu datagrid.. tu colocas tus propios controles cuando se presenten en modo edición.

Por ejemlo... tienes una columna que se llama LastName que lo traes de un template column (y el campo de tu BD se llama lastname ) y lo colocas en una label... te quedaría:

Cita:
<asp:TemplateColumn HeaderText="Last Name">
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.lastname ") %>'>
</asp:Label>
</ItemTemplate>
Hasta aquí bien.. . por otro lado cuando el usuario de click para editar esa columna tambien colocas dentro de tu templatecolumn y campo por ejemplo de textbox para que pueda editar el valor de tu lastname, y con ello poder hacer el update, delete.. etc.

te quedaría.

Cita:
<EditItemTemplate>
<asp:TextBox id="txtName " runat="server"></asp:TextBox>
</EditItemTemplate>
Claro que si deseas que te cargue el valor que tiene en la base de datos tambien lo puedes hacer así.

Cita:
<EditItemTemplate>
<asp:TextBox id=txtName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.lastname ") %>'>
</asp:TextBox>
</EditItemTemplate>
De tal forma que te quedaría completo de la siguiente forma

Cita:
<asp:TemplateColumn HeaderText="Last Name">
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.lastname") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox id="txtLastName " runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
y ya cuando desees accesar para guardar, borrar, etc. a través del parámetro "e".. puedes hacerlo así.


Cita:
Dim LastName As String = CType(e.Item.FindControl("txtLastName "), TextBox).Text
Con ello lo que haces es buscar el control que tenga el ID = txtLastName

Espero que con ésto te hayas dado una mejor idea.


saludos
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:23.