Uma das críticas ao WPF é que não havia uma DataGrid para mostrar os dados em formato de tabela. Bem, isso é passado. A Microsoft lançou a Datagrid no WPF toolkit, que pode ser baixado em http://www.codeplex.com/wpf. Ela é bastante poderosa e versátil. Se você não sabe como usá-la, pode checar meu artigo no portal Linha de Código em http://www.linhadecodigo.com.br/Artigo.aspx?id=2163

Vale a pena dar uma conferida!

17 Thoughts on “Usando a DataGrid WPF

  1. Mauro Otoni on December 14, 2008 at 6:28 am said:

    Bruno, era isto q/ estava faltando. Muito Bom

    Valeu.

  2. Rouseman on April 18, 2009 at 5:41 pm said:

    Bruno, estou formatando a coluna do DataGrid da seguinte forma:














    é não consigo colocar o separador de casas decimais das colunas ‘Entrada’ como ( , )

    Desde já agradeço sua atenção, atenciosamente,

    Rouseman
    desenvolvedorr@hotmail.com

  3. bsonnino on April 18, 2009 at 6:01 pm said:

    Faça o seguinte no binding:

    Binding=”{Binding Saida, StringFormat=’#,##0.00′}, ConverterCulture=’pt-BR'”

    Bruno

  4. Rouseman on April 19, 2009 at 9:28 am said:

    Bruno, show funcionou perfeitamente!
    Só um detalhe a ser corrigido a chave fecha no Final…

    Binding=”{Binding Saida, StringFormat=’#,##0.00′, ConverterCulture=’pt-BR’}”

    Abraços,

  5. Olá Bruno!
    Eu vi seu WebCast sobre o dataGrid no MSDN, e tentei fazer o exemplo….
    só que o meu VS 2008 parece não ter a mesma configuração, pois não consigo adicionar os componentes da mesma forma que você(arrastar e colar no código) e nem encontrar outros componentes como DataGridColunmHeader e RowStyle.
    Tem como me ajudar para fazer essa configuração no meu VS2008?

  6. bsonnino on October 13, 2009 at 2:21 pm said:

    Você baixou e instalou o WPFToolkit? (http://codeplex.com/wpf)

  7. Baixei sim!
    instalei e ele apareceu la na toolbox, mas algumas coisas que voce tinha na sessão general da toolbox eu não consegui encontrar para adicionar, eu consegui fazer o exemplo, mas foi tudo na mão.
    Eu queria saber onde é que eu consigo adicionar por exemplo o objectDataProvider, RowStyle e DataGridColunmHeader.

  8. Olá!
    Estou aqui novamente e com outra dúvida!
    Estou iniciando projeto com banco de dados firebird!
    E estou tentando fazer com XAML e datagrid do WPFToolKit.
    Mas quando os dados para a data grid, são geradas somente as linhas ficando sem os valores e as colunas.
    O meu código c# é esse:
    public partial class Window1 : Window
    {
    public Window1()
    {

    try
    {
    InitializeComponent();
    DataSet ds = BD.PreencheDataSet(“Select CodMedico, Nome, CRM From Medico Order By CodMedico”, “MEDICO”);
    DataTable dt = ds.Tables[“MEDICO”];
    ArrayList teste = new ArrayList();
    if (dt.Rows.Count > 0)
    {
    for (int i = 0; dt.Rows.Count > i; i++)
    {
    teste.Add(dt.Rows[i]);
    }
    dtgMedicos.ItemsSource = teste;
    for (int i = 0; dtgMedicos.Items.Count > i; i++)
    {
    MessageBox.Show(dtgMedicos.Items[i].ToString());
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message.ToString());
    }
    }
    }

    e o código XAML é esse:


    lsTemplate>

  9. Valeu Bruno, salvou minha pele hahaha.
    Parabéns pela ótima cobertura do WPF

  10. bsonnino on December 17, 2009 at 4:55 am said:

    Saulo:

    O problema é que você está usando o AutoGenerateColumns=”False”

    Mude para

    AutoGenerateColumns=”True”

    Bruno

  11. Opa bsonnino nao estou conseguindo preencher os textbox atraves do duplo clik no grid em wpf voce poderia me ajudar ?

  12. Sera que poderia me ajudar dei uma olhada no seu blog e encontrei uns posts sobre datagrid, mas mesmo com todos eles não estou conseguindo listar dados no meu datagrid, adiciono a conexão mas não lista nada.

    Cara se pode me ajudar ficarei grato porque não sei mas o que fazer já fiz de tudo e nada da certo.

    Eu testei minha conexão no c# e consegui listar porque la eu uso DataSouse mas no WPF não consigo usar e uso DataContext e não funciona não lista nada.

    Segue minha conexão.

    //define a string de conexao com provedor caminho e nome do banco de dados

               string strProvider = “server=localhost;userid=root;password=cortesolutions10@;database=db_wpf_cad_cliente”;

                       //define a instrução SQL

                       string strSql = “SELECT * FROM tb_usuario”;

               //cria a conexão com o banco de dados

               MySql.Data.MySqlClient.MySqlConnection con = new MySql.Data.MySqlClient.MySqlConnection(strProvider);

               //cria o objeto command para executar a instruçao sql

               MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(strSql, con);

               //abre a conexao

               con.Open();

               //define o tipo do comando

               cmd.CommandType = CommandType.Text;

               //cria um dataadapter

               MySql.Data.MySqlClient.MySqlDataAdapter da = new MySql.Data.MySqlClient.MySqlDataAdapter(cmd);

               //cria um objeto datatable

               DataTable usuario = new DataTable();

               //preenche o datatable via dataadapter

               da.Fill(usuario);

               //atribui o datatable ao datagridview para exibir o resultado

               CustomerGrid.DataContext = usuario;

    Obrigado

    Abraço.

    André Côrte

     

  13. Sera que poderia me ajudar dei uma olhada no seu blog e encontrei uns posts sobre datagrid, mas mesmo com todos eles não estou conseguindo listar dados no meu datagrid, adiciono a conexão mas não lista nada.

    Cara se pode me ajudar ficarei grato porque não sei mas o que fazer já fiz de tudo e nada da certo.

    Eu testei minha conexão no c# e consegui listar porque la eu uso DataSouse mas no WPF não consigo usar e uso DataContext e não funciona não lista nada.

    Segue minha conexão.

    //define a string de conexao com provedor caminho e nome do banco de dados

               string strProvider = “server=localhost;userid=root;password=cortesolutions10@;database=db_wpf_cad_cliente”;

                       //define a instrução SQL

                       string strSql = “SELECT * FROM tb_usuario”;

               //cria a conexão com o banco de dados

               MySql.Data.MySqlClient.MySqlConnection con = new MySql.Data.MySqlClient.MySqlConnection(strProvider);

               //cria o objeto command para executar a instruçao sql

               MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(strSql, con);

               //abre a conexao

               con.Open();

               //define o tipo do comando

               cmd.CommandType = CommandType.Text;

               //cria um dataadapter

               MySql.Data.MySqlClient.MySqlDataAdapter da = new MySql.Data.MySqlClient.MySqlDataAdapter(cmd);

               //cria um objeto datatable

               DataTable usuario = new DataTable();

               //preenche o datatable via dataadapter

               da.Fill(usuario);

               //atribui o datatable ao datagridview para exibir o resultado

               CustomerGrid.DataContext = usuario;

    Obrigado

    Abraço.

    André Côrte

     

  14. bsonnino on May 28, 2013 at 1:42 pm said:

    Você tentou usar a propriedade ItemsSource?

    CustomerGrid.ItemsSource = usuario;

    Bruno

  15. Bruno, obrigado pela força mas consegui com esta forma o problema estava ocorrendo porque tinha um espaço na instrução mysql.

    Abraço.

  16. Bruno, voce teria alguma função que consegue enviar dados de um datagrid em um form para textbox de outro form, pois não estou conseguindo no C# tenho uma função que consigo mas no WPF não estou conseguindo segue minha função que uso no C#.

    View.editar.cliente.formEditarCliente _visualizar = new editar.cliente.formEditarCliente();

    _visualizar.id_cliente = gridCliente[0, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.nome_cliente = gridCliente[1, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.razao_social = gridCliente[2, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.nome_fantasia = gridCliente[3, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.cpf_cnpj = gridCliente[4, gridCliente.CurrentRow.Index].Value.ToString();

    _visualizar.email = gridCliente[5, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.skype = gridCliente[6, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.telefone = gridCliente[7, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.celular = gridCliente[8, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.homepage = gridCliente[9, gridCliente.CurrentRow.Index].Value.ToString();

    _visualizar.logradouro = gridCliente[10, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.numero = gridCliente[11, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.complemento = gridCliente[12, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.cidade = gridCliente[13, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.bairro = gridCliente[14, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.cep = gridCliente[15, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.uf = gridCliente[16, gridCliente.CurrentRow.Index].Value.ToString();
    _visualizar.data_cadastro = gridCliente[17, gridCliente.CurrentRow.Index].Value.ToString();

    _visualizar.StartPosition = FormStartPosition.WindowsDefaultLocation;
    _visualizar.ShowDialog();

  17. bsonnino on June 3, 2013 at 11:39 am said:

    Use a propriedade SelectedItem da DataGrid. Com ela, você tem todos os dados para colocar na outra janela. Use o DataBinding, que é a maneira correta e muito mais fácil de fazer.

    []s

    Bruno

Leave a Reply

Your email address will not be published. Required fields are marked *

Post Navigation