La suite de controles de Developer Express, es amplia y nos brinda muchas mejoras en el desarrollo de aplicaciones .NET.
El ASPXGridView es un excelente control que nos permitirá de manera fácil, filtrar, ordenar y paginar nuestros datos, además de mejorar la presentación.
El ejemplo que posteo a continuacion realiza el enlace al control por medio de código, además nos facilita la inserción y actualización de datos, sin utilizar el un datasource tipado o enlazado. Haremos uso de la base de datos Northwind y la tabla Products para el ejemplo.
1. Agregamos un ASPxGridView que se llama por defecto: ASPxGridView1
2. Generamos la carga de datos desde el evento Load del formulario:
Dim dt As New DataTable
Dim da As New SqlDataAdapter("select * from products", _
ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
da.Fill(dt)
ASPxGridView1.DataSource = dt
ASPxGridView1.DataBind()
3. Definiremos las columnas que mostraremos en el grid, además de otras propiedades.
Nos permitirá habilitar el popup que mostrara un formulario de captura.
<SettingsEditing Mode="PopupEditForm" PopupEditFormWidth="400px" />
Nos permitirá ubicarnos en cada fila
<SettingsBehavior AllowFocusedRow =true />
Dentro de Templates crearemos el Formulario Popup que mostrara los datos seleccionados ademas de poder inserter uno Nuevo.
A Continuación remplazaremos el código que forma el ASPxGridView1 por el siguiente código:
<dx:ASPxGridView ID="ASPxGridView1" runat="server" KeyFieldName="ProductID"
AutoGenerateColumns=False>
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" />
<NewButton Visible="True" />
dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="ProductID" VisibleIndex="1">
dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ProductName" VisibleIndex="2">
dx:GridViewDataTextColumn>
Columns>
<SettingsEditing Mode="PopupEditForm" PopupEditFormWidth="400px" />
<SettingsBehavior AllowFocusedRow =true />
<Templates>
<EditForm>
<div style="padding:4px 4px 3px 4px">
<asp:Label ID="lblProducto" runat=server Text='<%#Eval("ProductID")%>'>asp:Label>
<br />
Producto: <asp:TextBox ID="txtNombre" Width=300px runat=server Text='<%#Eval("ProductName")%>'>asp:TextBox>
<br />
Precio: <asp:TextBox ID="txtPrecio" Width=300px runat=server Text='<%#Eval("UnitPrice")%>'>asp:TextBox>
<br />
Cantidad x Unidad: <asp:TextBox ID="txtCantidad" Width=300px runat=server Text='<%#Eval("QuantityPerUnit")%>'>asp:TextBox>
div>
<div style="text-align:right; padding:2px 2px 2px 2px">
<dx:ASPxGridViewTemplateReplacement ID="Registrar" ReplacementType="EditFormUpdateButton" runat="server">dx:ASPxGridViewTemplateReplacement>
<dx:ASPxGridViewTemplateReplacement ID="Cancelar" ReplacementType="EditFormCancelButton" runat="server">dx:ASPxGridViewTemplateReplacement>
div>
EditForm>
Templates>
dx:ASPxGridView>
4. Crearemos los eventos ASPxGridView1_RowInserting y ASPxGridView1_RowUpdating para insertar y actualizar registros. Nótese que buscaremos cada uno de los controles definidos en la pagina instanciándolos a un objeto en el evento del mismo tipo. Al final utlizaremos e.Cancel = True para evitar que busque un método de actualización automático que no está implementado, ya que lo estamos haciendo manual. Agregaremos los dos métodos a continuación:
Protected Sub ASPxGridView1_RowInserting(ByVal sender As Object, ByVal e As DevExpress.Web.Data.ASPxDataInsertingEventArgs) Handles ASPxGridView1.RowInserting
Dim lblProducto As Label = TryCast(ASPxGridView1.FindEditFormTemplateControl("lblProducto"), Label)
Dim txtNombre As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtNombre"), TextBox)
Dim txtPrecio As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtPrecio"), TextBox)
Dim txtCantidad As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtCantidad"), TextBox)
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("INSERT INTO Products (ProductName, UnitPrice, QuantityPerUnit, Discontinued) VALUES ('" & txtNombre.Text & "', '" & txtPrecio.Text & "', '" & txtCantidad.Text & "', 0)", conn)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
e.Cancel = True
End Sub
Protected Sub ASPxGridView1_RowUpdating(ByVal sender As Object, ByVal e As DevExpress.Web.Data.ASPxDataUpdatingEventArgs) Handles ASPxGridView1.RowUpdating
Dim lblProducto As Label = TryCast(ASPxGridView1.FindEditFormTemplateControl("lblProducto"), Label)
Dim txtNombre As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtNombre"), TextBox)
Dim txtPrecio As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtPrecio"), TextBox)
Dim txtCantidad As TextBox = TryCast(ASPxGridView1.FindEditFormTemplateControl("txtCantidad"), TextBox)
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("UPDATE Products SET ProductName='" & txtNombre.Text & "' WHERE ProductId='" & lblProducto.Text & "'", conn)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
e.Cancel = True
End Sub
Finalmente hemos implementado la inserción y actualización de registros en el aspxGridView de Developer Express sin utilizar asistentes o mecanismos tipados, lo hemos hecho manual lo cual nos da mayor control de lo que queremos realizar. A continuación el Link donde podemos descargar el proyecto completo.
http://www.4shared.com/file/bOHqLvgt/GridViewTemplate.html
Muchas gracias por tu ayuda me ha sido muy útil esta entrada de tu blog y veo que conoces de los componentes DevExpress para ASP.NET espero encontrar más información de esto ya que soy nuevo en lo de ASP.NET
ResponderEliminarSaludos
pus estudia pendejo!! hay demasido material como para que preguntes!! si quieres te hacemos el programa de una vez pinche huevon pendejo hijo de la verga lechosa! chinga tu madre por puto pregunton pendejo!
EliminarIdiota eso no es ayudar pendejo, algun dia te quedaras como pendejo por no preguntar xD
EliminarHola, encuentro tu ayuda muy buena, sin embargo, al hacer las agrupaciones o hacer filtro o nisiquiera realizar busquedas no funcionan, tu sabes como hacer esta operación
ResponderEliminarHola,tengo un AspxGridView (DevExpress) lo estoy usando en C# .NET Visual Studio 2010..
ResponderEliminareste AspxGridView esta lleno con numeros y fechas.. Ejemplo: /fechasorteo/sorteo1/sorteo2/sorteo3
lo que quiero saber es como consultar un numero y saber cuantas veces esta en una columna (ejemplo buscar cuantas veces esta un numero X en Sorteo1..)
esto se podria hacer?
Podria ayudarme....
Muchas gracias, un gran ejemplo... me ayudo mycho... ojala pudieras poner mas ejemplos como este sobre los controles de devexpress.
ResponderEliminarHola me ha servido mucho pero tengo una duda me puedes ayudar en la conversion a Label como lo tienes pero en c#! Te lo agradeceria mucho
ResponderEliminarpodrian subir nuevamente el proyecto lo quise descargar y ya no existe
ResponderEliminar