ListView: Linq
Nesse artigo vou ensinar como popular o Listiview utilizando linq, é como acessar os controles do Asp.net
Olá bem vindos a mais um artigo meu nome é Emerson Jose nesse artigo vou ensinar como popular o Listiview utilizando linq, é como acessar os controles do Asp.net .
Vamos utilizar o banco Northwind como exemplo de acesso a dados e a tabela Category.
Para quem tem duvida de como adicionar o modelo e também de como funciona para colocar as tabelas nele segue o link abaixo com o exemplo em vídeo aula.
http://www.asp.net/linq/videos/how-do-i-linq-to-sql-data-model
Após ter criado o projeto Web na linguagem C# adicionado o Modelo e a tabela no mesmo.
O próximo passo ir na página Default.aspx é adicionar os controles como mostra abaixo.
Selecionar : <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Todos" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Nenhum" />
<br />
<asp:ListView runat="server" ID="ltvCategory">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<asp:CheckBox CssClass="chkSelect" runat="server" ID="chkCategory" />
<br />
</ItemTemplate>
</asp:ListView>
Após ter adicionado os controles abra o CS da página Default.aspx, e crie um método do tipo private com o nome LoadControl, esse método vai ser responsável por preencher o Listivew com as informações da tabela Category, e também por criar um EventHandler para nos trabalhar no ItemDataBound do Listivew.
private void LoadControl()
{
//Aqui estamos instanciando nosso modelo e abrindo nossa conexao com a //base
using (DataDataContext context = new DataDataContext())
{
//usando o mesmo contexto do linq vamos chamar nossa tabela Category e //dar um ToList(). Para gerar uma lista com todas as informações da //tabela
ltvCategory.DataSource = context.Categories.ToList();
ltvCategory.DataBind();
//para criar o evento handler coloque += e duas vezes tab ele gerar o //evento criando um novo método DataBound para o listview
ltvCategory.ItemDataBound += new EventHandler<ListViewItemEventArgs>(ltvCategory_ItemDataBound);
ltvCategory.DataBind();
}
}
Agora vamos preencher o ItemDataBound do Listivew o controle que temos é ChekBox então vamos lá o código abaixo eu faço um findControl assim consegue acessar as propriedades do controle que esta no Listivew assim é podendo trabalhar com o controle no Code Behimd colocando texto ou até mesmo as informações que esta sendo preenchida no Listivew usando DataBinder.
void ltvCategory_ItemDataBound(object sender, ListViewItemEventArgs e)
{
CheckBox chkCategory = (CheckBox)e.Item.FindControl("chkCategory");
chkCategory.Text = DataBinder.Eval(DataBinder.GetDataItem(e.Item), "CategoryName").ToString();
}
Agora vamos criar um método novamente do tipo private que vai ser responsável por acessar os itens do Listiview e seta True no método Checked do nosso controle CheckBox.
private void CheckBoxSelect(bool pSelect)
{
foreach (ListViewDataItem _item in ltvCategory.Items)
{
CheckBox chkCategory = (CheckBox)_item.FindControl("chkCategory");
chkCategory.Checked = pSelect;
}
}
Com exemplo acima nos constrói um código mais orientado e desconectado podendo usar o mesmo método no evento click dos dois Button.
Próximo passo, vamos adicionar os eventos click um do Button Todos e no Nenhum e chamar adicionar os métodos como mostra abaixo.
protected void Button1_Click(object sender, EventArgs e)
{
CheckBoxSelect(true);
}
protected void Button2_Click(object sender, EventArgs e)
{
CheckBoxSelect(false);
}
Pronto agora execute o projeto e clique no Button todos, após clicar ele vai selecionar todos os itens do Listivew e quando clicar novamente no Button nenhum ele vai desmarcar os itens, abaixo segue o link para download do exemplo e base de dados.
Download do Banco - Northwind
http://www.microsoft.com/downloads/details.aspx?familyid=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en
Download do Projeto:
http://blog.emersonjsouza.com/Download/CheckBoxListivew.rar
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo