Fazendo laços em WebControls
Um recurso de programação muito útil é a realização de laços através dos WebControls para a realização de tarefas repetitivas. Por exemplo, em um formulário de cadastramento, a passagem de cada TextBox para a coleção parameters de um Command poderia ser feita com um laço.
O problema é que os WebControls não podem ser facilmente localizados utilizando Me.Controls. Os WebControls de um WebForm encontram-se normalmente dentro do WebForm, que é por si só um control que encontra-se dentro da coleção Me.Controls
Então para podermos realizar este tipo de algorítimo devemos localizar o formulário e só então fazer laços com os controles contidos dentro do formulário. Podemos criar uma função que possa localizar e devolver o objeto formulário dentro da coleção Me.Controls. Veja como fica:
Function acharForm() As Web.UI.HtmlControls.HtmlForm
Dim obj As Web.UI.Control
For Each obj In Me.Controls
If TypeOf obj Is Web.UI.HtmlControls.HtmlForm Then
Return (obj)
End If
Next
End Function
Veja um exemplo de uso desta função para preencher o parameters de um command:
Private Sub cmdAtualizar_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles cmdAtualizar.Click
Dim obj As Web.UI.Control
Dim f As Web.UI.HtmlControls.HtmlForm
f = acharForm()
For Each obj In f.Controls
If TypeOf obj Is System.Web.UI.WebControls.TextBox Then
cmd.Parameters(obj.id)).Value = DirectCast(obj, TextBox).Text
End If
Next
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
End Sub
Recursos como esses podem ser produzidos em classes base e as páginas podem herdar destas classes, como comentamos em outras dicas aqui no site