C#
- Usando ListView para exibição de dados
![]() |
Neste artigo vou mostrar algumas propriedades e recursos do controle ListView para exibição e organização de dados. |
Eu estou usando o SharpDevelop 2.2 mas podemos usar o Visual C# Express Edition.
Veja na figura abaixo o leiaute do formulário da nossa primeira aplicação usando ListView com C#. Ela tem o objetivo de mostrar como exibir dados no ListView. No exemplo eu estou usando o banco de dados Northwind.mdb e a aplicação tem o objetivo de executar consultas SQL que o usuário digita na caixa de texto e exibir o resultado no controle ListView.
Inicie o SharpDevelop e no menu Arquivo selecione Novo -> Solução;
A seguir na janela Novo Projeto selecione C# -> Aplicações Windows e informe o nome executaSQL e clique em Criar;
![]() |
No formulário MainForm.cs inclua os componentes conforme o leiaute abaixo;
![]() |
Os controles usados no
formulário são: 1- TextBox - txtSql ; Multiline = True 2- Button - cmdExecuta 3- TextBox - txtBD 4- Listview - lvwResultado ; View = Details |
No evento Click do botão de comando Executar temos o código que acessa o banco de dados Northwind.mdb informado, executa um comando com a instrução SQL informada e gera um datareader exibido o resultado no ListView; (Veja o comentário no código para detalhes)
private void cmdExecuta_Click(object sender, System.EventArgs e) { //verifica se foi informada uma consulta if (txtSql.Text.Equals("")) { MessageBox.Show("Digite uma instrução válida."); return; } //define a string de conexão string sDBstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + txtBD.Text; //criar o objeto connection OleDbConnection conn = new OleDbConnection(sDBstr); try { //limpa o listview lvwResultado.Columns.Clear() ; lvwResultado.Items.Clear(); //abre a conexao conn.Open(); //cria um comando oledb OleDbCommand cmd = conn.CreateCommand(); //define o tipo do comando como texto cmd.CommandText = txtSql.Text; //executa o comando e gera um datareader OleDbDataReader dr = cmd.ExecuteReader(); //preenche o cabeçalho do listview com os nomes dos campos for (int i = 0; i< dr.FieldCount; i++) { ColumnHeader ch = new ColumnHeader(); ch.Text=dr.GetName(i); lvwResultado.Columns.Add(ch); } //define um item listview ListViewItem item; //inicia leitura do datareader while (dr.Read()) { item=new ListViewItem(); item.Text= dr.GetValue(0).ToString(); //preenche o listview com itens for (int i=1 ; i< dr.FieldCount; i++) { item.SubItems.Add(dr.GetValue(i).ToString()); } lvwResultado.Items.Add(item); } //fecha o datareader dr.Close(); } catch ( System.Data.OleDb.OleDbException ex) { MessageBox.Show("Ocorreu um erro durante a execução da instrução SQL." + "Erro : " + ex.Message, "SQL"); } finally { //fecha a conexao conn.Close(); } } |
Executando o projeto para a instrução SQL : Select * from Products; temos o seguinte resultado:
Como podemos ver o controle ListView é muito versátil e fácil de usar. Vejamos alguns recursos deste controle:
A Hierarquia de classe do componente pode ser visto a seguir:
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ListView
O ListView possui um menu de tarefas (ListView Tasks) onde podemos editar itens, colunas e grupos além de definir o modo de visão como: Tile, Small Icons, Large Icons, List e Details.
Quando você seleciona o primeiro item no menu de tarefa do ListView o editor de coleção de itens é exibido e ListViewItems pode ser incluídos ou removidos e suas propriedades podem ser definidas. Um objeto ListViewItem pode exibir uma imagem com um texto, neste caso um ImageList deve ser usado para associar a imagem com o objeto ListViewObject.
A classe ListViewItem representa itens em um controle ListView e a classe ListViwSubItem representa um sub-item relacionado ao ListViewItem. A classe ListViewItem expõe a propriedade coleção de SubItems que representa uma lisa de sub-itens relacionas a um item.
![]() |
Além disso podemos incluir itens manualmente no controle incluindo ListViewItems na propriedade Items da coleção de itens do ListView. Veja um exemplo abaixo:
ListViewItem listViewItem1 =
new ListViewItem();
ListViewSubItem listViewSubItem1 = new ListViewSubItem();
listViewItem1.Text = "Macoratti";
listViewSubItem1.Text = "www.macoratti.net";
listViewItem1.SubItems.Add(listViewSubItem1);
listView1.Items.Add(listViewItem1);
Da mesma forma para incluir colunas manualmente basta inserir objetos ColumnHeader a coleção Columns do ListView. Neste caso as colunas serão exibidas somente se o modo de exibição do ListView estiver definido para Details. Exemplo:
ColumnHeader columnHeader1 =
new ColumnHeader();
ColumnHeader columnHeader2 = new ColumnHeader();
columnHeader1.Text = "Nome";
columnHeader2.Text = "E-mail";
listView1.Columns.Add(columnHeader1);
listView1.Columns.Add(columnHeader2);
Para incluir um grupo via
código inserimos objetos ListViewGroup a
coleção Groups do ListView. Exemplo:
listView1.Groups.Add(new ListViewGroup("Friends", HorizontalAlignment.Left));
Para definir o modo de visão via código fazemos:
listView1.View = View.Details;
Em um próximo artigo vou mostrar como podemos exibir, incluir, e ler dados em um ListView sem usar um banco de dados.
Aguarde...
Veja os
Destaques e novidades do
SUPER DVD Visual Basic (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET