Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

N3lson

Fixar tamanho da Coluna (DATAGRID)

Mensagens Recomendadas

N3lson    17
N3lson

Boas tenho o seguinte código para preencher a datagrid

cmd = new MySqlCommand(query, con.liga());

			con.abre();

			cmd.Parameters.AddWithValue("@maquina", maquina);

			reader = cmd.ExecuteReader();

			this.GridPreventivas.RowHeadersVisible = false;

			dtPreventivas.Columns.Add("id");
			dtPreventivas.Columns.Add("Data");
			dtPreventivas.Columns.Add("Freq.");
			dtPreventivas.Columns.Add("Actividade a executar");
			dtPreventivas.Columns.Add("Operador");
			dtPreventivas.Columns.Add("Impressão");

			string _print = "";

			while (reader.Read())
			{
					int id = (int)reader["id"];
					DateTime data = Convert.ToDateTime(reader["data_inicio"]);
					int freq = (int)reader["frequencia"];
					string actividade = (string)reader["actividade"];
					var operador = Convert.ToString((int)reader["operador"]);
					var print = (int)reader["print"];

					switch (print)
					{
						case 1:
							_print = "Por Imprimir";
							break;
						case 2:
							_print = "Impresso";
							break;
					}

				   dtPreventivas.Rows.Add(
										   id,
										   data.ToString().Substring(0, 10),
										   freq ,
										   actividade,
										   funcao.RetornarOperador(operador),
										   _print
										 );
			 }


			this.GridPreventivas.DataSource = dtPreventivas;

			this.GridPreventivas.Columns["id"].Visible = false;


		MessageBox.Show(this.GridPreventivas.Columns["Data"].ToString()); // este valor indica-me o index 2

O messageBox indica o index 2 mas se fizer o this.GridPreventivas.Columns[2].Width = 45; dá erro Object reference not set to an instance of an object.

Editado por apocsantos

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Bom dia,

Estás a usar Windows Forms ?

A primeira questão que se me assalta à mente é porque motivo usas o "this". a todos os instantes....

A segunda é porque usas o "this" na mssagebox, uma vez que "this" refere-se ao objecto corrente, que no caso da messagebox, seria a propria message box, logo a menos que o datagridview estivesse dentro da messagebox, o this não faz sentido!

Repara:

This -> Esta

Se o objecto que contem a datagridview for um winform, this.GridPreventivas -> a datagrid preventivas existe no objecto actual (este).

Quando usas a messagebox, estás a referir uma datagrid que supostamente existe dentro da messagebox, porque "this" passa a ser "messagebox".

Cordiais cumprimentos,

Apocsantos

  • Voto 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Obrigado pela resposta.

É o habito de programar em jquery :), estou a iniciar ( por conta própria no c# ) e como tenho visto esse uso ...

Mesmo sem usar o this o resultado é o mesmo.

Como fazer ?

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch    17
vikcch

Boas,

Não seria mais simples preencher logo a datatable com o resultado da query?

ex:

DataTable dtPreventivas = new DataTable();
dtPreventivas.Load(reader);

Esse switch (print) até pode ser logo incluído na query... o funcao.RetornarOperador(operador) não sei o que faz mas secalhar também.... de qualquer maneira podes sempre alterar as colunas da datatable...

Quando à duvida de redimensionar a coluna, não sei qual pode ser o problema... se meteres this.GridPreventivas.Columns["Data"].Width = 45; vai dar o mesmo erro, certo?

Também gosto de usar o this quando me estou a referir a objecto do form...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Boa noite,

MessageBox.Show(nomeDoForm.GridPreventivas.Columns["Data"].ToString()); // troca nomeDoForm, pelo nome do form onde está a datagrid.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Boas,

Não seria mais simples preencher logo a datatable com o resultado da query?

ex:

DataTable dtPreventivas = new DataTable();
dtPreventivas.Load(reader);

Esse switch (print) até pode ser logo incluído na query... o funcao.RetornarOperador(operador) não sei o que faz mas secalhar também.... de qualquer maneira podes sempre alterar as colunas da datatable...

Quando à duvida de redimensionar a coluna, não sei qual pode ser o problema... se meteres this.GridPreventivas.Columns["Data"].Width = 45; vai dar o mesmo erro, certo?

Também gosto de usar o this quando me estou a referir a objecto do form...

Eu estou a usar o DataReader para preencher a Tabela pois necessito de personalizar os campos, esse funcao.retornar... é uma exemplo disso (foi a unica forma que descobri de personalizar os campos)

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.