Publicidad:
La Coctelera

Categoría: .NET

0

Programador .NET

Necesito a alguien que sepa programar en ASP.NET para incorporarse a un proyecto en marcha. Es bastante urgente. Podeís mandar curriculum a: juan_ak@hotmail.com

0

Enlace de un ObjectDataSource un GridView y una clase en ASP.NET

Creamos una clase con sus popiedades y sus metodos.
Centremonos en metodo en concreto que su funcion será listar una tabla de una base de datos SQL server. El método devolvera un objeto de la clase dataset que luego lo utlizaremos en el ObjectDataSource
'Listar con una condicion

Public Function Listar() As Data.DataSet

Dim oResultado As New Data.DataSet
Dim oConexion As New SqlConnection
Dim oComando As New SqlCommand
Dim oDataAdapter As New SqlDataAdapter

Dim sSQL As String

oResultado.Clear()

sSQL = "SELECT * FROM presupuestos"
oConexion.ConnectionString = cadenaConexion
oConexion.Open()
oComando.CommandType = Data.CommandType.Text
oComando.Connection = oConexion
oComando.CommandText = sSQL
oDataAdapter.SelectCommand = oComando
oDataAdapter.Fill(oResultado)

oConexion.Close()

Listar = oResultado

End Function

Una vez creada la clase con todas sus propidades y medodos, creamos un fichero aspx. En el insertamos un objeto de tipo ObjectDataSource

<'asp:ObjectDataSource ID="rs" runat="server" TypeName="presupuesto" selectmethod="Listar" >

<'SelectParameters>

<'asp:Parameter DefaultValue="" Name="strCondicion" Type="String" />

<'/SelectParameters>

<'/asp:ObjectDataSource>

Para enlazar el obejto ObjectDataSource con nuestra clase y más concretamente con la función Listar(), dentro de ella le asignaremos a la propiedad TypeName el nombre de la clase y en la propiedad selectmethod el nombre del procedimiento que queremos ejecutar, en nuestro caso "Listar". Cuando se carje nuestro objeto dentro de la página aspx, autmomaticamente se lanzará el metodo indicado. El objeto ObjectDataSource contedrá los datos devueltos por el dataset en el del método Listar().

Una vez que tengamos relleno nuestro ObjectDataSource con los datos solo hay que mostrarlo. Para mostrar los datos podemos utilizar un objeto GridView y en la propiedad DataSourceID le asignaremos el nombre de objeto ObjectDataSource creador anteriormente

<'asp:GridView ID="GridView1" Runat="server" AllowPaging="True"
AllowSorting="True" PageSize="10" DataSourceID="rs" AutoGenerateColumns="False">
<'Columns>
<'asp:BoundField HeaderText="Code" DataField="codigo" SortExpression="codigo">
<'ItemStyle HorizontalAlign="Left" Width="150px"><'/ItemStyle>
<'/asp:BoundField>
<'asp:BoundField HeaderText="Date" DataField="fecha" SortExpression="fecha">
<'ItemStyle HorizontalAlign="Left" Width="500px"><'/ItemStyle>
<'/asp:BoundField>
<'asp:BoundField HeaderText="State" DataField="estado" SortExpression="estado">
<'ItemStyle HorizontalAlign="Left" Width="500px"><'/ItemStyle>
<'/asp:BoundField>
<'asp:BoundField HeaderText="Customer" DataField="nombrecliente" SortExpression="nombrecliente">
<'ItemStyle HorizontalAlign="Left" Width="500px"><'/ItemStyle>
<'/asp:BoundField>
<'asp:BoundField DataField="id" Visible="False"><'/asp:BoundField>
<'/Columns>
<'EmptyDataTemplate> Empty Table <'/EmptyDataTemplate>
<'/asp:GridView>

Con todo conseguimos no acceder a la base de datos directamente desde el aspx sino que todo queda en la clase, que es la que devuelve los resultados que son interpretados por los objetos asp.net

Nota: Le he tenido que poner unas comillas simples antes de cada etiqueta asp porque si no, no salían. Se las comia por to la cara :P