Ir para conteúdo
Fórum Script Brasil
  • 0

Deixar Coluna Autosize no DataGrid (C# Smart Device)


Ricardo T. do Prado

Pergunta

Senhores,

Estou fazendo uma aplicação Smart Device (C#), e estou montando um classe para o DataGrid, só que, NÃO CONSIGO FAZER AS COLUNAS DO HEADER se ajustarem automaticamente ao conteudo.

Estou fazendo programático os códigos. Segue abaixo trecho da classe:

public void PopularGridView(DataGrid gridName, string sqlQuery)
        {

            try
            {
                SqlCeDataAdapter da = new SqlCeDataAdapter(sqlQuery, AbrirConexao());
                DataTable dt = new DataTable();
                da.Fill(dt);

                gridName.DataSource = dt;

                //Formatação Estilo da DataGrid
                gridName.RowHeadersVisible = false; //cabeçalho da linha false
                gridName.HeaderBackColor = System.Drawing.Color.Orange; //background cabeçalho coluna
                gridName.HeaderForeColor = System.Drawing.Color.White; //cor do titulo cabeçalho coluna
                gridName.ForeColor = System.Drawing.Color.DimGray; //cor dos dados
                gridName.GridLineColor = System.Drawing.Color.Transparent; //cor da linha da grid
                gridName.Width = 232; //tamanho maximo da grid
                gridName.SelectionBackColor = System.Drawing.Color.DimGray; // bg da celula selecionada
                gridName.SelectionForeColor = System.Drawing.Color.White; // cor dos dados selecionados

                gridName.BackgroundColor = System.Drawing.Color.White;

                

                

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                CloseConexao(AbrirConexao());
            }

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Ricardo, boa tarde!

Também estou desenvolvendo uma aplicação SmartDevice e me deparei com o mesmo problema que o seu.

Depois de muito procurar, beber muito café(rs) e ficar quase louco, consegui fazer esse esquema.

Acredite, é uma coisa muito besta, para variar.

Bom, vamos lá.

Tudo girará em torno da propriedade MappingName do objeto DataGridTableStyle e DataGridColumnStyle de nosso DataGrid.

1-) Adicione um TableStyle em seu DataGrid e defina o MappingName com o mesmo nome da tabela que irá exibir (pode ser outra string, mas, para padronizar, deixe o mesmo nome da tabela).

2-) Adicione, na propriedade GridColumnStyles, todos os campos que deseja exibir na grid. Não esqueça de preencher o MappingName de cada um com o nome exato do campo retornado pela SELECT.

3-) No seu código, adicione o seguinte:

...

SqlCeDataAdapter da = new SqlCeDataAdapter(sqlQuery, AbrirConexao());

DataTable dt = new DataTable();

da.Fill(dt);

dt.TableName = "MESMO NOME DEFINIDO no MappingName do objeto DataGridTableStyle";

gridName.DataSource = dt;

//Formatação Estilo da DataGrid

gridName.RowHeadersVisible = false; //cabeçalho da linha false

...

4-) Após isso, você poderá definir na propriedade Width do objeto GridColumnStyles uma largura desejada. Se quiser, poderá até fazer um método que conte os caracteres do maior campo retornado para preencher esse valor. Utilize gridName.TableStyles[0].GridColumnStyles[0].Width = NovoValor para modificar a propriedade (0 é o indice que diz respeito a coluna que deseja alterar a propriedade).

OBS: Segundo minhas pesquisas em desenvolvimento SmartDevice, não consegui achar nenhum método ou propriedade que redimensione automaticamente as células do objeto DataGrid. Diferentemente de quando desenvolvemos para desktop, que possui a propriedade AutoSizeColumnsMode no próprio DataGridView.

Espero ter ajudado!

Abraços,

Junior.

Editado por Junior Trevisan
Link para o comentário
Compartilhar em outros sites

  • 0

Júnior,

Obrigado pelo exemplo, com certeza também perdi foi semanas e muito café. Deste método também consegui, mas ainda é um modo "manual", já que tenho várias DataGrid e todos dados provém de classes de dados. Infelizmente até agora não consegui encontrar nada, só para desktop como você mesmo disse usando AUTOSIZE. Pelo empenho em ajudar, no que puder lhe ajudar também me coloco à disposição já que durante um bom tempo vou trabalhar com smart device. Se quiser tenho uma classe aqui de configurações e dados totalmente dinâmica, se quiser lhe forneço.

Obs. Se tiver interesse no meu profile tem meu messenger, pode add sem problemas, quem sabe podemos nos ajudar

[]'s

Ricardo prado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...