9 07 2010
.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.
Copiando arquivos em VB.NET Um guia sobre Design Patterns para iniciantes (tradução)
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
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
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
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
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
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