Há um que teima em não disparar...
Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.Design.WebControls
Imports System.Web.UI.WebControls
Public Class UniversalListing
Inherits System.Web.UI.WebControls.GridView
#Region " Declaração de controlos "
' Declaração dos controlos que compõem a interface
Protected Shared WithEvents txtSearchBox As New System.Web.UI.WebControls.TextBox
Protected Shared WithEvents bttnSearchButton As New System.Web.UI.WebControls.Button
'LiteralControl para escreve HTML simples para o UI do controlo
Protected litSimpleHTML As New LiteralControl
#End Region
#Region " Propriedades e Campos "
#Region " Propriedade SearchButtonProperties "
Private varSearchButtonProperties As New SearchButtonPropertiesCollection
''' <summary>
''' Propriedade que contém ou define as propriedades do botão de submissão da pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property SearchButtonProperties() As SearchButtonPropertiesCollection
Get
Return varSearchButtonProperties
End Get
Set(ByVal value As SearchButtonPropertiesCollection)
varSearchButtonProperties = value
End Set
End Property
#End Region
#Region " Propriedade SearchBoxProperties"
Private varSearchBoxProperties As New SearchBoxPropertiesCollection
''' <summary>
''' Propriedade que contém ou define as propriedades da textbox de pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property SearchBoxProperties() As SearchBoxPropertiesCollection
Get
Return varSearchBoxProperties
End Get
Set(ByVal value As SearchBoxPropertiesCollection)
varSearchBoxProperties = value
End Set
End Property
#End Region
#End Region
#Region " Propriedades do botão de pesquisa "
''' <summary>
''' Classe que contem as propriedades do botão de confirmação da pesquisa
''' </summary>
''' <remarks></remarks>
Public Class SearchButtonPropertiesCollection
''' <summary>
''' Propriedade Text do botão de pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Text() As String
Get
Return bttnSearchButton.Text
End Get
Set(ByVal value As String)
bttnSearchButton.Text = value
End Set
End Property
''' <summary>
''' Propriedade CssClass do botão de pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property CssClass() As String
Get
Return bttnSearchButton.CssClass
End Get
Set(ByVal value As String)
bttnSearchButton.CssClass = value
End Set
End Property
End Class
#End Region
#Region " Propriedades da textbox de pesquisa "
''' <summary>
'''
''' </summary>
''' <remarks></remarks>
Public Class SearchBoxPropertiesCollection
''' <summary>
''' Propriedade Text da caixa de pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Text() As String
Get
Return txtSearchBox.Text
End Get
Set(ByVal value As String)
txtSearchBox.Text = value
End Set
End Property
''' <summary>
''' Propriedade CssClass da caixa de pesquisa
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property CssClass() As String
Get
Return txtSearchBox.CssClass
End Get
Set(ByVal value As String)
txtSearchBox.CssClass = value
End Set
End Property
End Class
#End Region
#Region " Eventos e Métodos "
#Region " Construtor "
''' <summary>
''' Construtor. Inicializa o controlo e os seus objectos
''' </summary>
''' <remarks></remarks>
Public Sub New()
Me.Controls.Add(txtSearchBox)
Me.Controls.Add(bttnSearchButton)
Me.Controls.Add(litSimpleHTML)
' Activar a feature de fazer o submit com a tecla Enter (evento OnKeyPress do JavaScript)
txtSearchBox.Attributes.Add("OnKeyPress", "if (window.event.enterKey) form1.submit();") End Sub
#End Region
#Region " Método RenderControl "
''' <summary>
''' Método responsável pela renderização dos objectos de UI que compõem o controlo.
''' Neste caso primeiro faz o render da textbox de pesquisa, depois da barra de navegação AlfaNumérica
''' e finalmente faz o render da GridView
''' </summary>
''' <param name="writer">O System.Web.UI.HtmlTextWriter que vai escrever o HTML de output</param>
''' <remarks></remarks>
'''
Public Overrides Sub RenderControl(ByVal writer As System.Web.UI.HtmlTextWriter)
txtSearchBox.RenderControl(writer)
litSimpleHTML.Text = " "
litSimpleHTML.RenderControl(writer)
bttnSearchButton.RenderControl(writer)
litSimpleHTML.Text = "<hr>"
litSimpleHTML.RenderControl(writer)
MyBase.RenderControl(writer)
End Sub
#End Region
#End Region
Public Shared Sub bttnSearchButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bttnSearchButton.Click
txtSearchBox.Text = "Carregou"
HttpContext.Current.Session("Texto") = "Carregou do Session" End Sub
End Class
Este é o Código da página q consome o controlo:
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Protected WithEvents lstUniversal As New UniversalListing
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
form1.Controls.Add(lstUniversal)
If Session("Texto") <> String.Empty Then lstUniversal.SearchBoxProperties.Text = Session("Texto") End If
End Sub
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
Dim cmd As New SqlClient.SqlCommand
Dim da As New SqlClient.SqlDataAdapter
Dim con As New SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ApolloSqlServer").ConnectionString) Dim dtDados As New Data.DataTable
con.Open()
cmd.Connection = con
cmd.CommandText = "SELECT * FROM EntEnts"
da.SelectCommand = cmd
da.Fill(dtDados)
lstUniversal.AllowSorting = True
lstUniversal.AllowPaging = True
lstUniversal.DataSource = dtDados
lstUniversal.DataBind()
con.Dispose()
cmd.Dispose()
dtDados.Dispose()
da.Dispose()
End Sub
End Class