CARREGAR CAMPOS C#
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
Alan
Sim, é perfeitamente possÃvel carregar um registro de acordo com sua chave primária.
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.
Formulário que está passando o parâmetro.
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()
Veja se te ajuda
http://www.macoratti.net/11/11/c_ctv1.htm
http://www.macoratti.net/11/11/c_ctv1.htm
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:
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:
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:
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:
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:
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:
ou
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
é 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
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:
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.
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.
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...
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Ã!
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Ã!
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