C# - Preenchendo um ListView com um DataSet
Nesta dica eu mostro como preencher um controle ListView usando o DataSet da ADO .NET e a linguagem C#. |
Lembrando que o DataSet é indicado quando você desejar efetuar edição nos dados.
Abaixo temos um esquema do funcionamento do nosso exemplo:
Iremos acessar o banco de dados Northwind.mdf do SQL Server e exibir os dados da tabela Products.
Vamos usar criar o DataSet através do SqlDataAdapter e extrair a tabela com os dados para exibir no ListView;
Podemos criar o projeto no Sharpdevelop 3.2 ou no Visual C# 2008 Express, ambas ferramentas são gratuitas:
Crie o projeto do tipo Aplicação Windows com o nome ListViewDataSet;
Primeiro devemos incluir referências no formulário aos namespaces usados:
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; |
Em seguida vamos definir as variáveis que iremos usar no projeto:
private DataSet _DataSet; private SqlConnection _Conn; private SqlDataAdapter _DataAdapterProducts; |
A rotina que inicializa o ListView é dada abaixo:
private void inicializaListView() { // exibe detalhes listView1.View = View.Details; // permite ao usuário editar o texto listView1.LabelEdit = true; // permite ao usuário rearranjar as colunas listView1.AllowColumnReorder = true; // Selecione o item e subitem quando um seleção for feita listView1.FullRowSelect = true; // Exibe as linhas no ListView listView1.GridLines = true; // Anexa Subitems no ListView listView1.Columns.Add("ProductName", 200, HorizontalAlignment.Left); listView1.Columns.Add("ProductID", 70, HorizontalAlignment.Left); listView1.Columns.Add("UnitPrice", 100, HorizontalAlignment.Left); } |
A rotina para carregar os dados para o ListView é apresentada a seguir:
// Carrega dados de um DataSet no ListView private void carregaLista() { // Obtem a tabela do dataset DataTable dtable = _DataSet.Tables["Products"]; // limpa o ListView listView1.Items.Clear(); // exibe os itens no controle ListView for (int i = 0; i < dtable.Rows.Count; i++) { DataRow drow = dtable.Rows[i]; // Somente as linhas que não foram deletadas if (drow.RowState != DataRowState.Deleted) { // Define os itens da lista ListViewItem lvi = new ListViewItem(drow["ProductName"].ToString()); lvi.SubItems.Add (drow["ProductID"].ToString()); lvi.SubItems.Add (drow["UnitPrice"].ToString()); // Inclui os itens no ListView listView1.Items.Add(lvi); } } } //fim carregaLista |
A rotina GetDados é quem carrega os dados do banco dados no DataSet e possui o código a seguir:
public void GetDaDos() { string strConn = "Server = .\\sqlexpress;Database = NorthWind; Integrated Security = SSPI;"; try { _Conn = new SqlConnection(strConn); // preenche o dataset string strSQL = "SELECT ProductName, " + "ProductID, " + "UnitPrice " + "FROM Products " + "ORDER BY ProductName"; _DataSet = new DataSet(); _DataAdapterProducts = new SqlDataAdapter(strSQL, _Conn); _DataAdapterProducts.Fill(_DataSet, "Products"); } catch (Exception ex) { string msg = ex.Message.ToString(); MessageBox.Show(msg, "Não foi possivel acessar os dados.", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } } |
A execução do projeto exibe o seguinte resultado:
Aguarde mais dicas sobre o ListView...
Eu sei é apenas C# , mas eu gosto...
Referências: