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