Vinculação de dados com WEBCONTROL

 

Hoje iremos tratar sobre vinculação de dados, ou seja, databound de controles com asp.net, iremos construir um controle que se vincule a uma fonte de dados, será explicado passo a passo os códigos para que seja fácil o entendimento.

 

Primeiramente criei um novo projeto do tipo Web Control Library dê o nome que quiser e escolha a linguagem Visual Basic.

 

Ficando assim:

 

Imports System

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Text

Imports System.Web

Imports System.Web.UI

Imports System.Web.UI.WebControls

Imports System.Collections

 

<DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> _

Public Class WebCustomControl1

    Inherits WebControl

 

' Primeiramente iremos declarar duas variáveis

 

    Private _html As New StringBuilder()

    Private _dataSource As IEnumerable

 

    'Em seguida criaremos uma propriedade do tipo IEnumerable, esta interface expõe uma coleção de um tipo especificado.

 

Public Property fonteDados() As IEnumerable

        Get

            Return _fonte

        End Get

        Set(ByVal value As IEnumerable)

            _fonte = value

        End Set

    End Property  

 

 

'Em seguinda criaremos nossa lista de controles, e renderizamos da maneira que acharmos necessário.

    'Neste caso foi criada uma lista html.

Private Sub criaControle()

        Dim dataSource As IEnumerable = Nothing

 

        Try

            dataSource = Me._fonte

        Catch

        End Try

 

        If Not (dataSource Is Nothing) Then

            _html.Append("<ul>")

            Dim dataObject As Object

            For Each dataObject In dataSource

                _html.Append("<li>")

                _html.Append(dataObject)

                _html.Append("</li>")

            Next dataObject

            _html.Append("</ul>")

        End If

End Sub

 

    'Agora sobrescrevemos o método DataBind simplesmente chamando nossso método criaControle.

 

    Public Overrides Sub DataBind()

        MyBase.OnDataBinding(EventArgs.Empty)

 

        criaControle();

    End Sub

 

'Por fim renderizamos nosso controle.

 

    Protected Overrides Sub Render(ByVal output As HtmlTextWriter)

        output.Write(_html)

    End Sub

 

End Class

 

Dê um build no projeto criado.

 

Crie um novo WebSite, adicione o WebControl criado na toolbox e no evento page_load adicione o seguinte código.

 

ArrayList ar = new ArrayList();

        ar.Add("1º Item");

        ar.Add("2º Item");

        WebCustomControl1_1.fonteDados = ar;

        WebCustomControl1_1.DataBind();

 

O resultado será esse:

 

dmvdwc.gif 

 

É isso pessoal até a próxima.