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:
É isso pessoal até a próxima.