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

Crear clase que hereda de DataGrid

Estas en el tema de Crear clase que hereda de DataGrid en el foro de .NET en Foros del Web. Hola mis amigos del foro espero que me puedan ayudar porque estoy en algunos apuros con esto del datagrid. Les cuento que he creado una ...
  #1 (permalink)  
Antiguo 11/03/2005, 08:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 3 meses
Puntos: 1
Crear clase que hereda de DataGrid

Hola mis amigos del foro espero que me puedan ayudar porque estoy en algunos
apuros con esto del datagrid.

Les cuento que he creado una clase que hereda de DataGrid. Bueno esto lo he hecho de forma
que pueda utilizar mi propio detagrid en mi aplicacion web.
En esta clase he creado un metodo en el cual defino todas las propiedades del datagrid, y luego
llamo a esta propiedad en el método render. De esta forma mi datagrid tiene siempre la misma
caracteristica en cada web form que lo agrego, y en el caso de tener que cambiar alguna propiedad
como por ejemplo el color de fondo del header voy a la clase y listo.

Pero les cuento que esto me esta trayendo un problema al momento de editar los datos en el datagrid.
Cada vez que intento modificar el valor que tiene una columna en una determinada fila siempre me deja
el valor que tenia antes y no me coloca el nuevo valor que le estoy agregando, y creo que no es un problema
con mi metodo de editar ya que este funciona perfectamente cuando utilizo el datagrid de visual studio.

Me pueden decir que estoy haciendo mal? De que forma puedo crear una clase de datagrid que pueda reutilizar en
mi proyecto sin problemas?
Aqui les dejo el código de mi clase, espero lo vean y lo prueban para que vean lo que me sucede a mi. Saludos...


Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Drawing

Public Class MiDataGrid

Inherits DataGrid

Private Sub ConfigurarMiDataGrid()
MyBase.FooterStyle.BackColor = ColorTranslator.FromHtml("#CCCCCC")
MyBase.FooterStyle.BorderColor = Color.White
MyBase.FooterStyle.BorderStyle = BorderStyle.NotSet
MyBase.FooterStyle.Font.Bold = True
MyBase.FooterStyle.Font.Italic = False
MyBase.FooterStyle.Font.Name = "Verdana"
MyBase.FooterStyle.Font.Overline = False
MyBase.FooterStyle.Font.Strikeout = False
MyBase.FooterStyle.Font.Underline = False
MyBase.FooterStyle.ForeColor = Color.Black
MyBase.FooterStyle.HorizontalAlign = HorizontalAlign.NotSet
MyBase.FooterStyle.VerticalAlign = VerticalAlign.NotSet
MyBase.FooterStyle.Wrap = True
MyBase.GridLines = GridLines.Both
MyBase.HeaderStyle.BackColor = ColorTranslator.FromHtml("#6B86AA")
MyBase.HeaderStyle.BorderColor = Color.White
MyBase.HeaderStyle.BorderStyle = BorderStyle.NotSet
MyBase.HeaderStyle.Font.Bold = True
MyBase.HeaderStyle.Font.Italic = False
MyBase.HeaderStyle.Font.Name = "Verdana"
MyBase.HeaderStyle.Font.Overline = False
MyBase.HeaderStyle.Font.Size = FontUnit.Parse("8pt")
MyBase.HeaderStyle.Font.Strikeout = False
MyBase.HeaderStyle.Font.Underline = False
MyBase.HeaderStyle.ForeColor = Color.White
MyBase.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
MyBase.HeaderStyle.VerticalAlign = VerticalAlign.Bottom
MyBase.HeaderStyle.Wrap = True
MyBase.HorizontalAlign = HorizontalAlign.NotSet
MyBase.ItemStyle.BackColor = ColorTranslator.FromHtml("#EEEEEE")
MyBase.ItemStyle.BorderColor = Color.White
MyBase.ItemStyle.BorderStyle = BorderStyle.NotSet
MyBase.ItemStyle.Font.Bold = False
MyBase.ItemStyle.Font.Italic = False
MyBase.ItemStyle.Font.Name = "Verdana"
MyBase.ItemStyle.Font.Overline = False
MyBase.ItemStyle.Font.Size = FontUnit.Parse("8pt")
MyBase.ItemStyle.Font.Strikeout = False
MyBase.ItemStyle.Font.Underline = False
MyBase.ItemStyle.ForeColor = Color.Black
MyBase.ItemStyle.HorizontalAlign = HorizontalAlign.NotSet
MyBase.ItemStyle.VerticalAlign = VerticalAlign.NotSet
MyBase.ItemStyle.Wrap = True
MyBase.PagerStyle.BackColor = ColorTranslator.FromHtml("#B9B9B9")
MyBase.PagerStyle.BorderColor = Color.WhiteSmoke
MyBase.PagerStyle.BorderStyle = BorderStyle.NotSet
MyBase.PagerStyle.Font.Bold = False
MyBase.PagerStyle.Font.Italic = False
MyBase.PagerStyle.Font.Overline = False
MyBase.PagerStyle.Font.Size = FontUnit.Parse("11px")
MyBase.PagerStyle.Font.Strikeout = False
MyBase.PagerStyle.Font.Underline = False
MyBase.PagerStyle.ForeColor = Color.Black
MyBase.PagerStyle.HorizontalAlign = HorizontalAlign.Center
MyBase.PagerStyle.Mode = PagerMode.NumericPages
MyBase.PagerStyle.PageButtonCount = 10
MyBase.PagerStyle.Position = PagerPosition.Bottom
MyBase.PagerStyle.VerticalAlign = VerticalAlign.NotSet
MyBase.PagerStyle.Visible = True
MyBase.PagerStyle.Wrap = True
MyBase.PageSize = 10
MyBase.SelectedIndex = -1
MyBase.ShowFooter = False
MyBase.ShowHeader = True
End Sub

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
ConfigurarMiDataGrid()
MyBase.Render(writer)
End Sub

End Class
  #2 (permalink)  
Antiguo 11/03/2005, 09:43
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Cita:
Pero les cuento que esto me esta trayendo un problema al momento de editar los datos en el datagrid.
Cada vez que intento modificar el valor que tiene una columna en una determinada fila siempre me deja
el valor que tenia antes y no me coloca el nuevo valor que le estoy agregando,
Hola Vanessita, acabo de hacer un copy and paste de tu code y lo puse como una class library despues la agregue a mi toolbox de mi VS para poderlo incluir en una página, estuve haciendo pruebas pero no tuve problemas , no se exactamente en que parte te deje el valor del que hablas...

Como estas agregando la columna..?? estas haciendolo en tiempo de ejecución, diseño, etc..

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

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 11/03/2005, 14:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 3 meses
Puntos: 1
Rootk, las columnas de mi datagrid las defino en tiempo de diseño.
En el itemtemplate de cada columna coloco un label y a este label lo enlazo
con la columna de un dataset, para ello me voy al databindings y lo enlazo así:
DataBinder.Eval(Container, "DataItem.cdescripci")

En el edititemtemplate coloco una textbox e igual le doy el databindings.
Bueno cuando hago click en la columna editar y luego coloco x fila en modo
de edición todo bien, pero supon que edito una columna que tiene 150 y le pongo
300, pues cuando hago click en actualizar(UpdateCommand) pues me vuelve a colocar 150
en vez de 300.

De igual forma me pasa cuando agrego un nuevo item o fila al datagrid, pues cuando indico
los valores para cada columna esta nueva fila en vez de seguir ahi pues ya no esta.

Espero me puedas ayudar y muchas gracias por responder.
  #4 (permalink)  
Antiguo 14/03/2005, 14:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 3 meses
Puntos: 1
hasta ahora no he podido solucionar mi problema.
será que a alguien más le ha pasado lo mismo?. de verdad
no se que sucede.
  #5 (permalink)  
Antiguo 17/03/2005, 09:44
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Vanessita.. ahorita me di un tiempo para hacer varias pruebas con tu datagrid..., y puede hacer, delete, update, y todo, no le encuentro problema, posiblemente la bronca esté en tu code para hacer el update no crees..??

Porque hice pruebas usando northwind... algo así:

Cita:
<cc1:MiDataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton Runat="server" CommandName="Edit" ID="Linkbutton1">Editar</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton Runat="server" CommandName="Update" ID="Linkbutton2">Actualizar</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<%# Container.DataItem("CustomerID") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat=server ID="Textbox1" Text='<%# Container.DataItem("CustomerID")%>' />
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
<ItemStyle Font-Size="8pt" Font-Names="Verdana" ForeColor="Black" BorderColor="White" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Size="8pt" Font-Names="Verdana" Font-Bold="True" HorizontalAlign="Center" ForeColor="White"
BorderColor="White" VerticalAlign="Bottom" BackColor="#6B86AA"></HeaderStyle>
<FooterStyle Font-Names="Verdana" Font-Bold="True" ForeColor="Black" BorderColor="White" BackColor="#CCCCCC"></FooterStyle>
<PagerStyle Font-Size="11px" BorderColor="WhiteSmoke" HorizontalAlign="Center" ForeColor="Black"
BackColor="#B9B9B9" Mode="NumericPages"></PagerStyle>
</cc1:MiDataGrid>
Y cuando le doy editar lo hace bien y para actualizar coloque algo como ésto:


Cita:
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.UpdateCommand
Dim s As String = CType(e.Item.FindControl("Textbox1"), TextBox).Text
Response.Write("Valor = " & s)
'despues de aqui, debes hacer el update.
dim sSQL = "UPDATE tabla set campo = " & s
...
...bla.. bla
DataGrid1.EditItemIndex = -1
DataGrid1.DataSource = Bind()
DataGrid1.DataBind()

End Sub
Donde la variable "s" contiene la informacion de mi textbox ya modificado, y lo hace bien,

Pero posiblemente tu problema no sea en tu grid si no en el code que estas pondiendo para hacer el update.

Checalo y cualquier cosa por aqui andamos...
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 18:23.