ASP.NET - Usando ArrayList


O objeto ArrayList é uma coleção de itens contendo um valor único.

Para incluir itens em um arraylist você usa do método Add(). Assim para criar um Arraylist chamado times e incluir 4 times o código usado é o seguinte:

script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim times=New ArrayList
  times.Add("Santos")
  times.Add("São Paulo")
  times.Add("Palmeiras")
  times.Add("Vasco")
end if
end sub
</script>

O número de entradas padrão de um ArrayList é 16. Para dimensionar um ArrayList até o seu final usamos o método TrimToSize().

script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim times=New ArrayList
  times.Add("Santos")
  times.Add("São Paulo")
  times.Add("Palmeiras")
  times.Add("Vasco")
  times.TrimToSize()
end if
end sub
</script>

Podemos também fazer a ordenação alfabética ou numérica usando o método Sort():

script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim times=New ArrayList
  times.Add("Santos")
  times.Add("São Paulo")
  times.Add("Palmeiras")
  times.Add("Vasco")
  times.TrimToSize()
  times.Sort()
end if
end sub
</script>

Para inverter a ordem temos o método Reverse() que deve ser usado após aplicar o método Sort():

script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim times=New ArrayList
  times.Add("Santos")
  times.Add("São Paulo")
  times.Add("Palmeiras")
  times.Add("Vasco")
  times.TrimToSize()
  times.Reverse()
end if
end sub
</script>

O objeto ArrayList pode gerar de forma automática o texto e os valores para os controles:

Vejamos um exemplo onde temos um ArrayList vinculado ao um controle ListBox:

Veja o exemplo funcionando aqui => ArrayList

A figura abaixo mostra a ordenação de um ArrayList e a posterior inclusão de um item que é exibido no controle ListBox:

O código é bem simples.

1- Primeiro declaramos os controles usados no arquivo arraylist.aspx conforme o código abaixo:

<html>
<head>
<title>Usando ArrayList</title>
</head>
<body>
<form id="form1" runat="server">
     <asp:ListBox id="lb1" runat="server" Width="120px" Height="127px"></asp:ListBox>
    <br />
      <asp:Button id="button2" onclick="IncluiItem" runat="server" Text="Inclui Item"></asp:Button>
      <asp:TextBox id="text1" runat="server"></asp:TextBox>
    <p>
      <asp:Button id="button1" onclick="Ordena" runat="server" Text="Ordena ASC"></asp:Button>
      <asp:Button id="button3" onclick="OrdDesc" runat="server" Text="Ordena DESC"></asp:Button>
    </p>
</form>
</body>
</html>

2- A seguir o script define o código para as rotinas : Ordena e OrdDesc que serão disparadas quando o usuário clicar nos botões Ordena ASC e Ordena DESC e Incluir Item.

A vinculação é feita através da propriedade DataSource do controle ListBox que é definida para o ArrayList . O método DataBind() do controle ListBox vincula a fonte de dados ao mesmo.

<%@ Page Language="vb" %>
<script runat="server">

Dim listaDeCompras as ArrayList

Sub Page_Load(Source as Object, E as EventArgs)

if not Page.IsPostBack then
    listaDeCompras=New Arraylist
    listaDeCompras.add("Ovos")
    listaDeCompras.add("Leite")
    listaDeCompras.add("Pão")
    listaDeCompras.add("Manteiga")
    listaDeCompras.add("Açucar")
    listaDeCompras.add("Chocolate")

    lb1.datasource=listaDeCompras
    lb1.databind

    Session("compras")=listaDeCompras
end if

End Sub

Sub Ordena(Source as Object, E as EventArgs)
    Session("compras").sort
    lb1.datasource=Session("compras")
    lb1.databind
End Sub

Sub OrdDesc(Source as Object, E as EventArgs)
   Session("compras").sort
   Session("compras").reverse

   lb1.datasource=Session("compras")
   lb1.databind
End Sub

Sub IncluiItem(Source as Object, E as EventArgs)
   Dim strItem as string
   strItem=text1.text
   Session("compras").add(strItem)
   text1.text=""
   lb1.datasource=Session("compras")
   lb1.databind
End Sub

</script>

Estou usando o objeto Session para armazenar o valor do ArrayList na sessão após a primeira carga da página (Page_Load) . Ele será recuperado para exibir os dados no controle ListBox.

Até o próximo artigo ASP.NET .


José Carlos Macoratti