martes, febrero 28, 2006

Crear un ABM en ASP.Net 2.0 Usando una GridView, un DetailView y

Este es un ejemplo simple de cómo crear un ABM con vb2005.

Para este ejemplo disponemos de un objeto que nos da los métodos para el alta la baja y la modificación, una página cuyo único componente es el GridView.

La estructura de la clase es la siguiente






El formulario ASP es el siguiente










Para establecer el Origen de datos, vamos a el combo Chose data Source - New Data Source

Seguimos los pasos del asistente para crear el origen de datos seleccionado como tal el objeto y le damos el nombre en este caso Engine









Elegimos el Objeto, en este caso Editorials

Y para cada uno de los metodos seleccionamos el que corresponde









Cuando finalizamos el asistente en el panel de la grilla nos habilita todas las opciones





Ya que lo que vamos a realizar es un ABM marcamos todas las opciones Editing, Deleting.

Ya marcados los cheks vamos a Edit Columns, ya que no tenemos un esquema como con el resto de los datasources, lo ideal es agregar las columnas nosotros mismos, por ello cuando vamos Edit Columns.. Desmarcamos la opción de autogeneración de columnas, como vemos el la imagen el único filed que aparce como seleccionado es el de los command.









Hora para las columnas que deseamos mostrar agregamos BoundField, para el ejemplo voy a agregar dos Una con el Id y otra con el nombre.

Para que el funcionamiento quede completo tenemos que en el código, verificar que los campos claves estén identificados, esto lo vemos en la vista Source del aspx el la definición del gridview que tenga DataKeyNames="Nombre de los campos claves"

Con esto tenemos lista la actualizacion y la eliminación de valores, para agregar valores voy a utilizar el DetailView, (este lo utilizo porque no pude hacer funcionar el boton nuevo del Dataview),

Para el DetailView configuramos un nuevo datasource utilizando el mismo objeto

Ya que el detailview nos permite realizar modificaciones y eliminar, tenemos que modificar las propiedades para que solo agrege datos

Las propiedades que modifique son

AutoGenerateInsertButton = true

AutoGenerateRows= trae

DefautMode=insert

Y para que el funcionamiento quede complete el el evento ItemInserted del detailview refrescamos la grilla para que se reflejen los cambios

Este el codigo de la pagina

<asp:DetailsView ID="DetailsViewAdd" runat="server" CellPadding="4"

DataSourceID="EngineDetail" ForeColor="#333333" GridLines="Horizontal" Height="15px"

Width="387px" HeaderText="Agregar:" AutoGenerateInsertButton="True" DataKeyNames="EditorialName" DefaultMode="Insert" AutoGenerateRows="False">

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />

<EditRowStyle BackColor="#2461BF" />

<RowStyle BackColor="#EFF3FB" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />

<FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" />

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<Fields>

<asp:BoundField DataField="EditorialName" />

</Fields>

</asp:DetailsView>

<asp:ObjectDataSource ID="EngineDetail" runat="server" InsertMethod="EditorialsAdd"

SelectMethod="EditorialsGetById" TypeName="Engine" DeleteMethod="EditorialsDelete" UpdateMethod="EditorialsUpdate">

<InsertParameters>

<asp:Parameter Name="EditorialName" Type="String" />

</InsertParameters>

<SelectParameters>

<asp:ControlParameter ControlID="DetailsViewAdd" Name="EditorialId" PropertyName="SelectedValue"

Type="Int32" />

</SelectParameters>

<DeleteParameters>

<asp:Parameter Name="EditorialId" Type="Int32" />

</DeleteParameters>

<UpdateParameters>

<asp:Parameter Name="EditorialId" Type="Int32" />

<asp:Parameter Name="EditorialName" Type="String" />

</UpdateParameters>

</asp:ObjectDataSource>

<asp:GridView ID="DtgEditoriales" runat="server" AutoGenerateColumns="False" DataKeyNames="EditorialId" CellPadding="4"

DataSourceID="Engine" ForeColor="#333333" GridLines="None" Width="385px" AllowSorting="True" RowHeaderColumn="EditorialId" AllowPaging="True">

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<Columns>

<asp:BoundField DataField="EditorialId" HeaderText="ID" SortExpression="EditorialId" ApplyFormatInEditMode="True" ReadOnly="True" />

<asp:BoundField DataField="EditorialName" HeaderText="Nombre" SortExpression="EditorialName" />

<asp:CommandField ButtonType="Button" HeaderText="ABM" ShowDeleteButton="True" ShowEditButton="True"

ShowHeader="True" CancelText="Cancelar" DeleteText="Borrar" EditText="Modificar" InsertText="Nuevo" NewText="Nuevo" UpdateText="Actualizar" />

</Columns>

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<PagerSettings FirstPageText="&lt;<" LastPageText="&gt;>" NextPageText="&gt;"

PreviousPageText="&lt;" />

</asp:GridView>

<asp:ObjectDataSource ID="Engine" runat="server" DeleteMethod="EditorialsDelete" InsertMethod="EditorialsAdd"

SelectMethod="EditorialsGetAll" TypeName="Engine" UpdateMethod="EditorialsUpdate">

<DeleteParameters>

<asp:Parameter Name="EditorialId" Type="Int32" />

</DeleteParameters>

<UpdateParameters>

<asp:Parameter Name="EditorialId" Type="Int32" />

<asp:Parameter Name="EditorialName" Type="String" />

</UpdateParameters>

<InsertParameters>

<asp:Parameter Name="EditorialName" Type="String" />

</InsertParameters>

</asp:ObjectDataSource>

Y este el el de la .vb

Partial Class ABMEditorials

Inherits System.Web.UI.Page

Protected Sub DetailsViewAdd_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles DetailsViewAdd.ItemInserted

DtgEditoriales.DataBind()

End Sub


End Class


4 comentarios:

  1. Anónimo11:11 a.m.

    Super color scheme, I like it! Keep up the good work. Thanks for sharing this wonderful site with us.
    »

    ResponderBorrar
  2. Anónimo1:22 p.m.

    Muy buena explicacion....
    Recien estoy empezando en ASP.NEt...preguntas:
    Se pueden poner controles de validacion al detailsView?????
    se puede utilizar por ejemplo un dropdownlist en el detailsview???

    mi correo es arrobalabase@hotmail.com
    te agradecere si podes responderme.....

    ResponderBorrar
  3. Anónimo11:19 p.m.

    Me urgía saber algo tan simple como "DtgEditoriales.DataBind()" y me has salvado la vida :) GRACIAS!! David.

    ResponderBorrar
  4. Anónimo5:56 p.m.

    mm, siempre todo a medias en internet.uff

    ResponderBorrar