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