ASP
.NET - Vinculando dados a controles de Lista (C#)
Hoje eu vou mostrar como vincular dados a alguns controles de lista ASP .NET usando como fonte de dados: ArrayList, HashTable , DataSet e XML.
Vamos iniciar abrindo o Visual Web Developer 2010 Express Edition e criando um novo projeto via opção File -> New Project;
Selecione a linguagem Visual C# e a opção Web;
A seguir selecione o template ASP .NET Web Application e informe o nome Controle_Lista_DataBinding;
![]() |
Será criando um projeto ASP .NET que utiliza uma Master Page e contém os Web Forms Default.aspx e About.aspx;
Vamos usar a estrutura criada ajustando-a às nossas necessidades para isso vamos começar excluindo a página About.aspx e a pasta Account do projeto;
Em seguida vamos abrir o arquivo Site.Master e alterar o seu conteúdo conforme o código a seguir:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<title></title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<div class="page">
<div class="header">
<div class="title">
<h1>
Macoratti .net - Controles de Lista
</h1>
</div>
<div class="loginDisplay">
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/UsandoArrayList.aspx" Text="ArrayList"/>
<asp:MenuItem NavigateUrl="~/UsandoHashTable.aspx" Text="HashTable"/>
<asp:MenuItem NavigateUrl="~/UsandoDataSet.aspx" Text="DataView"/>
<asp:MenuItem NavigateUrl="~/UsandoXML.aspx" Text="XML"/>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
</Items>
</asp:Menu>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
</html>
|
A aparência a Master Page deverá ficar conforme a figura abaixo:
![]() |
A seguir vamos incluir os Web Forms UsandoArrayList.aspx, UsandoHashTable.aspx , UsandoDataSet.aspx e UsandoXML.aspx em nosso projeto.
No menu Project clique em Add New Item;
Selecione o template Web Form using Master Page, informe o nome UsandoArrayList.aspx e clique no botão Add;
![]() |
Na próxima janela selecione a master page Site.Master clique em Ok;
![]() |
Repita o procedimento acima para as demais páginas.
Ao final a janela Solution Explorer do projeto deverá exibir o seguinte conteúdo:
![]() |
Definindo a página Defatul.aspx
Vamos começar definindo a nossa página Default.aspx como a principal do projeto.
Para isso clique com botão direito do mouse sobre a página e selecione Set As Start Page;
A seguir vamos alterar o conteúdo da nossa página Default.aspx alterando o seu código conforme abaixo:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Controle_Lista_DataBinding.SiteMaster" %>
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="Controle_Lista_DataBinding._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
Vinculando dados a controles de lista
<style type="text/css">
.style1
{
color: #6600FF;
}
.style2
{
color: #6600CC;
font-weight: bold;
}
</style>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Vinculando dados
</h2>
<p>
Um controles de lista do ASP.NET pode ser vinculado a qualquer fonte de dados<br/>
que implementa as interfaces IEnumerable, ICollection ou IListSource.<br />
(Ex: DataView, OleDbDataReader, SqlDataReader, Hashtable e ArrayList).
</p>
<p>
Os dados XML- eXtensible Markup Language também podem ser vinculados aos controles de lista,<br />
preencher um objeto DataView com os seus dados e então vincular o controle de lista ao objeto DataView.
</p>
<p>
A seguir temos exemplos de controles de lista sendo vinculados as seguintes fontes de dados :<br />
<h3>
<span class="style2"><strong>ArrayList<br />
HashTable<br />
DataView<br />
XML</strong></span><br />
</h3>
<p class="style1">
<strong>Para ver o exemplo clique no item do menu correspondente.
</strong>
</p>
<p>
</p>
</asp:Content>
|
O visual da página deverá ser o seguinte:
![]() |
Agora vamos definir o conteúdo de cada uma das páginas que incluímos no projeto.
1- Vinculando dados com um ArrayList
Abra a página UsandoArrayList.aspx e no editor do Visual Web Developer acione no modo Source e inclua o código abaixo nesta página:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="UsandoArrayList.aspx.cs" Inherits="Controle_Lista_DataBinding.UsandoArrayList" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
Usando ArrayList
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<html>
<body>
<asp:RadioButtonList id="mrdbLista" runat="server" />
<br><br>
<asp:button id="btnSubmit" runat="server" Text="Submeter"
onclick="Submit_click" />
<br><br>
<asp:label id="msgLabel" runat="server" />
</body>
</html>
</asp:Content>
|
A seguir abra o arquivo code-behind UsandoArrayList.aspx.cs e defina o código a seguir neste arquivo:
using System.Web.UI;
using System.Collections;
namespace Controle_Lista_DataBinding
{
public partial class UsandoArrayList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ArrayList lista = new ArrayList();
lista.Add("Vermelho");
lista.Add("Verde");
lista.Add("Azul");
lista.Add("Amarelo");
lista.Add("Preto");
lista.Add("Rosa");
lista.Add("Branco");
lista.Add("Laranja");
mrdbLista.DataSource = lista;
mrdbLista.DataBind();
}
}
protected void Submit_click(object sender, EventArgs e)
{
if (mrdbLista.SelectedIndex > -1)
{
msgLabel.Text = "Você selecionou : " + mrdbLista.SelectedItem.Text;
}
else
{
msgLabel.Text = "Selecione uma opção !";
}
}
}
}
|
2- Vinculando dados com uma HashTable
Abra a página UsandoHashTable.aspx e no editor do Visual Web Developer acione no modo Source e inclua o código abaixo nesta página:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="UsandoHashTable.aspx.cs" Inherits="Controle_Lista_DataBinding.UsandoHashTable" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
Usando HashTable
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:DataGrid id="mGridDados" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="Produto">
<ItemTemplate>
<%# ((DictionaryEntry)Container.DataItem).Key %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Quantidade">
<ItemTemplate>
<%# ((DictionaryEntry)Container.DataItem).Value %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</asp:Content>
|
A seguir abra o arquivo code-behind UsandoHashTable.aspx.cs e defina o código a seguir neste arquivo:
using System;
using System.Web.UI;
using System.Collections;
namespace Controle_Lista_DataBinding
{
public partial class UsandoHashTable : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Hashtable h = new Hashtable();
h.Add("Pen Drive 4 GB", "5");
h.Add("Memória 512 MB", "8");
h.Add("NoteBook 13", "2");
h.Add("Teclado", "11");
h.Add("Mouse", "10");
h.Add("Monitor LG 17 polegadas", "4");
h.Add("Câmera", "8");
h.Add("HD 500", "2");
h.Add("Fone Ouvido", "7");
h.Add("Mouse Óptico", "9");
mGridDados.DataSource = h;
mGridDados.DataBind();
}
}
}
}
|
3- Vinculando dados com um DataSet
Abra a página UsandoDataSet.aspx e no editor do Visual Web Developer acione no modo Source e inclua o código abaixo nesta página:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="UsandoDataSet.aspx.cs" Inherits="Controle_Lista_DataBinding.UsandoDataView" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
Usando DataSet
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:datagrid id="mgridDados" runat="server" />
<p>
<asp:label id="msgLabel" runat="server" />
</p>
</asp:Content>
|
A seguir abra o arquivo code-behind UsandoDataSet.aspx.cs e defina o código a seguir neste arquivo:
using System;
using System.Data;
using System.Data.SqlClient;
namespace Controle_Lista_DataBinding
{
public partial class UsandoDataView : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS; Initial Catalog = northwind; Integrated Security = SSPI;");
SqlDataAdapter adapter = new SqlDataAdapter("select EmployeeID,FirstName,Address,City,Country from employees", conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "employees");
//vincula dos dados no datagrid
mgridDados.DataSource = ds.Tables["employees"];
mgridDados.DataBind();
}
catch (Exception ex)
{
msgLabel.Text = "Erro ao acessar dados : " + ex.Message;
}
}
}
}
|
4- Vinculando dados com uma XML
Abra a página UsandoXML.aspx e no editor do Visual Web Developer acione no modo Source e inclua o código abaixo nesta página:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="UsandoXML.aspx.cs" Inherits="Controle_Lista_DataBinding.UsandoXML" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> Usando XML </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <asp:datagrid id="mgridDados" runat="server" /> <p> <asp:label id="msgLabel" runat="server" /> </p> </asp:Content> |
A seguir abra o arquivo code-behind UsandoXML.aspx.cs e defina o código a seguir neste arquivo:
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System;
namespace Controle_Lista_DataBinding
{
public partial class UsandoXML : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
FileStream fs = new FileStream(Server.MapPath("Catalogo.xml"),FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fs);
ds.ReadXml(reader);
fs.Close();
DataView source = new DataView(ds.Tables[0]);
mgridDados.DataSource = source;
mgridDados.DataBind();
}
}
}
|
Vamos criar um arquivo XML via menu Project -> Add New Item;
A seguir selecione Visual C# -> Data e selecione o template XML file , informe o nome Catalogo.xml e clique no botão Add;
![]() |
A seguir selecione e abra o arquivo Catalogo.xml e inclua o código abaixo neste arquivo:
![]() |
Agora já podemos executar o projeto e testar cada uma das opções observando o resultado obtido para cada vinculação de dados:
1- Página Default.aspx
![]() |
2- Página UsandoArrayList.aspx
![]() |
3- Página UsandoHashTable.aspx
![]() |
4- Página UsandoDataSet.aspx
![]() |
5- Página UsandoXML.aspx
![]() |
Pegue o projeto completo aqui:
Controle_Lista_DataBinding.zip
| Veja os Destaques e
novidades do SUPER
CD VB 2012 (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super CD .NET e no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# 2012 com exclusivo material de suporte e vídeo aulas com curso básico sobre C#.
|
Rom 15:2
Portanto cada um de nós agrade ao seu próximo, visando o que é bom para edificação.Referências: