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: