CARREGAR CAMPOS C#

ALANTB 12/09/2015 00:31:45
#451322
Olá, como se faz para que no evento dbclick do datagridview de um form carregue os campos de outro form. A finalidade é a seguinte: no form de cadastro de funcionario ao lado do campo código, com um um button abre um pequeno form (frmSelFunconario) com duas colunas: codigo e nome dos funcionários já cadastrados, e, ao clicar na linha do datagridview carrega os campos do formcadastro. Só um detalhe: no datagridview tem só o código e o nome mas no form de cadastro tem mais os campos: dataNasc e codCargo. Tem como só pelo código carregar os outros campos?????

Alan
KERPLUNK 12/09/2015 03:42:32
#451323
Sim, é perfeitamente possível carregar um registro de acordo com sua chave primária.
GUIMORAES 12/09/2015 09:39:24
#451325
Você pode criar uma variável pública dentro do formulário de destino e atribuir o valor a ela. Quando o formulário abrir você carrega o registro com base no valor atribuído.

Formulário que irá receber o parâmetro.

  

public partial class Form2 : Form
{
public Int32 codigo { get; set; }

public Form2()
{
InitializeComponent();
}
}




Formulário que está passando o parâmetro.
  

Form2 formulario = new Form2();
formulario.codigo = 1;
formulario.ShowDialog()

KURTGU 12/09/2015 12:55:35
#451332
Veja se te ajuda
http://www.macoratti.net/11/11/c_ctv1.htm
ACCIOLLY 13/09/2015 00:26:21
#451338
Resposta escolhida
Boa noite ALANTB olha nóis aí outra vez! rsrsrsrs

é o seguinte. antes vou te passar dois aspectos importantes
1º - Pra você pegar o valor do datagrid primeiro vc tem que saber qual o indice da coluna. Os indices sempre vão começar do 0 ou seja se a sua grid tem duas colunas os indices serão 0 e 1.
2º - Como voce vai usar esse valor pra criar um SQL, esse valor deve ser do tipo string OK!

tendo esse conhecimento básico, vamos pegar o valor do campo do grid no evento dbclick como vc falou:

string Codigo = DataGridView1.CurrentRow.Cells[0].Value.ToString();


Repare que [Ô][0][Ô] na verdade é o indice da sua coluna. Vamos supor que vc quer pegar o valor da quarta coluna, daí seria [Ô][3][Ô] entendeu?

Agora vamos pra segunda parte que é carregar esse valor recuperado do grid pro outro form. E foi muito boa a sua dúvida meu caro, porque vc vai aprender uma coisa primordial na linguagem orientada a objetos, que é a utilização dos métodos construtores da classe. Não se incomode com a palavra classe, pq vc tá o tempo todo trabalhando com elas. toda vez que vc tá mexendo na codificação, ela nada mais é do que uma classe. O método construtor já diz tudo, ele constroi a classe! simples assim. é claro que existe muuuuita coisa por trás disso mas não precisa esquentar com isso agora! rsrsrs

Todo método construtor é público, e tem o mesmo nome da classe. (To falando isso pra vc identifica-lo na codificação do seu outro form. Aquele que vc quer carregar todos os outros dados). Eles são fáceis de identificar também porque tem a seguinte linha de código:

InitializeComponents();


faz de conta que eu tenho esses seus dois formulários, primeiro eu vou trabalhar no form do cadastro, deixar ele pronto pra depois trabalhar com o evento que chama ele na pesquisa.

minha form de cadastro seria mais ou menos assim:

using System;

namespace exemplo
{
public partial class formCadastro : Form
{
public formCadastro()
{
InitializeComponents();
}
}
}


A primeira coisa a ser feita é criar uma variavel de classe e privada. Ou seja essa variavel tem que estar fora de qualquer método e deve ser privada para ser acessada apenas por essa classe. Depois eu encremento o método construtor passando pra ele um parametro do tipo string que por sua vez deixará essa variavel de classe com esse valor. Observe:

using System;

namespace exemplo
{
public partial class formCadastro : Form
{

private string codigoCliente; //essa é minha variavel de classe

public formCadastro(string codCli)//o que está entre parenteses é um parametro do tipo string
{
InitializeComponents();
this.codigoCliente = codCli;// aqui fala que a variavel de classe recebe o valor do parametro
}
}
}


Feito isso seu form de cadastro estará pronto. agora voltamos para o form de pesquisa dentro do evento dbclick da grid. Isso porque vai chamar o outro form de cadastro por ele:

string Codigo = DataGridView1.CurrentRow.Cells[0].Value.ToString();//aqui pega o valor da primeira coluna do grid
formCadastro cadastro = new formCadastro(Codigo);//aqui já é uma instancia do form do cadastro passando como parametro a string Codigo
cadastro.show();


Finalizou aqui também!

Daí pra frente, é só colocar lá no evento Load do form de cadastro um SELECT passando aquela variavel de classe como criterio. Não se esqueça do que te falei nos seus ultimos posts, pra carregar os valores do banco em textbox:

TextBox1.Text = dados.Rows[0][[Ô]campo da sua tabela[Ô]].toString;

ou
TextBox1.DataBindings.Add([Ô]Text[Ô], dados,[Ô]campo da sua tabela[Ô]);


Qualuqer coisa se não conseguir anexa seu projeto que faço pra vc entender

Me desculpe pelo livro que leu. apesar de ser poucas linhas que vc vai digitar, no começo é meio complicado de se entender mesmo!

Té mais
JABA 13/09/2015 06:42:38
#451343
Pelo o que eu entendi, você quer preencher os campos dataNasc e codCargo através de um datagridview de outro form e que está com os dados incompletos (apenas com o codigo e nome).

Bom, se seu projeto estiver se baseando no uso de classes, acho que tu poderia fazer assim:

Funcionario funcionario = (Funcionario) DataGridView1.CurrentRow.Cells[0];

txtCodigo.Text = funcionario.Codigo;
txtNome.Text = funcionario.Nome;
dataNasc.Text = funcionario.DataNasc;
txtCodCargo.Text = funcionario.CodCargo ;


Caso contrário, acho que você deverá fazer uma nova busca na base de dados pelo ID que está no datagridview para preencher esses campos que estão faltando.

ALANTB 14/09/2015 08:31:05
#451357
ACCYOLLY, usei suas orientações, ao digitar o código não ficou acusando erros, mas, me perdi na parte que o frmCadFunc recebe os dados do frmSelFunc no evento Load. Como atrelar a variável aos campos. Segue o que tenho até agora...
ACCIOLLY 14/09/2015 12:01:13
#451378
Bom dia ALAN

Revisei seu projeto e fiz algumas melhorias. espero que goste. Este é meu método de desenvolvimento.
Eu percebi que vc primeiro abre a janela de cadastro pra depois abrir a de pesquisa. Eu fiz o inverso! primeiro abre a de pesquisa. daí vc clica duas vezes num registro e abre a de cadastro com as informações.

Na janela de pesquisa coloquei os botoes adicionar, editar e deletar. e na de cadastro apenas gravar e sair. caso vc clicar em adicionar, será aberta a janela de cadastro vazia pra vc inserir novos dados.
caso clicar em editar o evento vai ser o mesmo do dbclick da grid.
e selecionando um registro e clicando em deletar vc exclui um.

quero que estude a metodologia que coloquei no form de cadastro. no evento load e no click do btgravar e repare que coloquei mais uma variavel de classe que é crucial para determinar se o formulario está no modo de edição ou de cadastro.

Outra coisa é que coloqueis seus forms dentro do MDIparent. assim todo seu aplicativo vai estar dentro de uma janela apenas. Como fiz isso? olhe a classe Program.cs que vc vai entender. Blz!

Qualquer coisa estamos aí!
ALANTB 14/09/2015 12:28:14
#451380
Valeu ACCIOLLY, as modificações ficaram ótimas. Com base nisso agora vou poder fazer os outros cadastros usando a mesma metodologia , que por sinal ficou bem intuitiva, e prosseguir. Até.....!!!!!
Tópico encerrado , respostas não são mais permitidas