André Alves de Lima

Talking about Software Development and more…

.NET Compact Framework: Alterando o tamanho das colunas do DataGrid

.NET Compact Framework: Alterando o tamanho das colunas do DataGrid

Falae galera, tudo certo?
 
Vamos a mais uma solução de dúvida interessante postada lá no fórum da MSDN, mais especificamente, esta dúvida: http://social.msdn.microsoft.com/Forums/pt-BR/mobilidadept/thread/501381b9-0dd1-4ab5-a378-3b6016b71eaa/
 
O usuário está querendo alterar o tamanho de todas as colunas do DataGrid do Compact Framework, mas, a fonte é dinâmica… Ou seja, ele não sabe as colunas que a grid vai ter…
 
Enfim… Para alterar o tamanho das colunas em um DataGrid do Compact Framework, você deve utilizar TableStyles… Basta adicionar os estilos das colunas num DataGridTableStyle e depois linkar esse TableStyle no seu DataGrid…
 
Como nesse caso não se sabe as colunas, a solução foi percorrer as colunas da DataTable (que é a fonte de dados que foi utilizada para alimentar a DataGrid) e criar os estilos dessas colunas dinamicamente…
 
No final das contas, ficou assim:
 

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SmartDeviceProject1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Primeiro, criando a DataTable que vai alimentar a grid.
            DataTable dt = new DataTable("nomeTabela");
            dt.Columns.Add("c1", typeof(string));
            dt.Columns.Add("c2", typeof(int));
            dt.Columns.Add("c3", typeof(double));
            // Criando as colunas....
            dt.Rows.Add("1", 1, 1.1);
            dt.Rows.Add("2", 2, 2.2);
            dt.Rows.Add("3", 3, 3.3);

            // Setando a fonte de dados da DataGrid apontando pra DataTable que criamos acima.
            dataGrid1.DataSource = dt;

            // Agora criando os TableStyles para cada coluna existente na DataTable!
            DataGridTableStyle tableStyle = new DataGridTableStyle();
            tableStyle.MappingName = dt.TableName;

            foreach (DataColumn column in dt.Columns)
            {
                DataGridTextBoxColumn dtgColumn = new DataGridTextBoxColumn();
                dtgColumn.MappingName = dtgColumn.HeaderText = column.ColumnName;
                dtgColumn.Width = 100;
                tableStyle.GridColumnStyles.Add(dtgColumn);
            }

            // E, finalmente, linkando a TableStyle na DataGrid!
            dataGrid1.TableStyles.Clear();
            dataGrid1.TableStyles.Add(tableStyle);
        }
    }
}

 
É isso aí… Se alguém precisar alterar o tamanho das colunas num DataGrid do Compact Framework, acho que esse exemplo vai ajudar!
 
Até a próxima!

André Alves de Lima.

6 thoughts on “.NET Compact Framework: Alterando o tamanho das colunas do DataGrid

  • Minervo Bendito Afonso disse:

    Parabéns senhor Alves. suas postagens são muito interessantes e detalhados. estão ajudar muito gente que pretendem profissionalizar-se em programação. Parabéns mesmo.

    SUGERIA QUE FALA-SE:

    _ SOBRE IMPRESSÃO DE RELATÓRIOS DIREITO USANDO REPORTVIEW SEM O USO do método PrintDialog() em c# …

    – ACERCA DE COMBINAÇÃO DE TECLAS COMO TAMBÉM AS TECLAS DE FUNÇÃO… C#.

    SE O FIZERES AGRADECIA TANTO… BOM TRABALHO E MUITO SUCESSO

    • andrealveslima disse:

      Olá Minervo, obrigado pelo comentário!

      Já está nos meus planos escrever sobre a impressão direto na impressora.. Fique atento às próximas postagens, pode ser que saia nos próximos meses..

      Quanto à sua segunda sugestão, não entendi muito bem o que você quis dizer.. Você poderia detalhar melhor? Se preferir, entre em contato por e-mail (meu endereço está disponível na minha página “Sobre“)..

      Abraço!
      André Lima

  • Douglas dos santos disse:

    Gostei muito do conteúdo pois gostaria de saber se seria possível eu redimensionar somente uma coluna da minha datagrid pos nesse exemplo vimos que ele aloca para a grid inteira

    • andrealveslima disse:

      Olá Douglas, obrigado pelo comentário!

      Acredito que nesse caso você poderia fazer da mesma forma, mas, só setar um Width caso a coluna seja a que você quer.. Caso contrário, não sete o Width, aí o grid deve utilizar o tamanho default para a coluna.. Não tenho mais um ambiente com .NET Compact Framework para testar, mas, acredito que dessa forma funcionaria.. Você chegou a testar?

      Abraço!
      André Lima

  • Douglas dos santos disse:

    Cara eu gostaria de saber um pouco mais sobre essa tecnologia estou tentando conectar o meu emulador com o banco de dados mas ele está ocorrendo um erro mas quando mando ele executar direto no aparelho ele executa perfeitamente

    • andrealveslima disse:

      Olá Douglas!

      Onde está o banco de dados que você está tentando conectar? Por acaso está na rede? Se estiver, o que pode estar acontecendo é que a rede não está configurada corretamente no emulador (eu lembro que era um saco configurar a rede no emulador do Windows Mobile).. Além disso, nos fale qual é a mensagem de erro que você está recebendo.. Talvez ela nos ajude a entender melhor o problema..

      Abraço!
      André Lima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *