Transferência de dados entre formulários
25/07/2014
0
Segue abaixo o código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TesteConsulta
{
public partial class frmClienteSelecionar : Form
{
public frmClienteSelecionar()
{
InitializeComponent();
}
private void btnPesquisar_Click(object sender, EventArgs e)
{
using (var ctx = new sigproEntities())
{
ctx.Configuration.LazyLoadingEnabled = false;
var resultado = from c in ctx.cliente //Dessa forma não funciona.
select new
{
c.Cliente_Id,
c.ClienteNome,
c.CpfCnpj,
c.DTCadastro,
c.DtNacimento
};
//var resultado = from c in ctx.cliente //Dessa forma funciona.
// select c;
dgvConsulta.DataSource = resultado.ToList();
}
}
private void btnConsultar_Click(object sender, EventArgs e)
{
cliente clienteSelecionado = (dgvConsulta.SelectedRows[0].DataBoundItem as cliente);
frmMedico frm = new frmMedico(clienteSelecionado);
frm.ShowDialog();
}
}
}
Após a consulta quero passar a linha selecionada para um outro formulário.
Segue código do formulário 2.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TesteConsulta
{
public partial class frmMedico : Form
{
public frmMedico(cliente Cliente)
{
InitializeComponent();
this.Text = "ESTUDO - Consulta Médico";
txtCodigo.Text = Cliente.Cliente_Id.ToString();
txtNome.Text = Cliente.ClienteNome;
txtCRM.Text = Cliente.CpfCnpj;
txtDTCadastro.Text = Cliente.DTCadastro.ToString();
txtDtNascimento.Text = Cliente.DtNacimento.ToString();
}
}
}
Se a consulta é realizada desta forma:
var resultado = from c in ctx.cliente //Dessa forma não funciona.
select new
{
c.Cliente_Id,
c.ClienteNome,
c.CpfCnpj,
c.DTCadastro,
c.DtNacimento
};
Os dados não são transferido para o outro formulário e apresenta o seguinte erro:
[img]http://arquivo.devmedia.com.br/forum/imagem/267760-20140725-105437.png[/img]
Agora se a consulta é feita desta forma:
var resultado = from c in ctx.cliente
select c;
dgvConsulta.DataSource = resultado.ToList();
O erro não acontece.
O que poderia ser...
Elessandro Poças
Posts
25/07/2014
Itamar Souza
Veja se isso lhe ajuda:
//eviando
Session["nomedasession"] = "conteúdo que vai passar ";
Response.Redirect("nomedoformulário");
//recebendo
string SessionRecebe = (string)(Session["nomedasession"]);
Atenciosamente!
25/07/2014
Elessandro Poças
Pois estou usando windows form desktop.
25/07/2014
Joel Rodrigues
frmMedico frm = new frmMedico(clienteSelecionado);
25/07/2014
Elessandro Poças
frmMedico frm = new frmMedico(clienteSelecionado); Nesta linha está como null.
Só que na linha anterior não está null:
cliente clienteSelecionado = (dgvConsulta.SelectedRows[0].DataBoundItem as cliente);
E agora...
25/07/2014
Joel Rodrigues
26/07/2014
Elessandro Poças
Obrigado pela sua ajuda, vou descrever abaixo uma forma que encontrei de fazer a passagem de informações de um DataGridView de um formulário de pesquisa para uma tela de cadastro.
Estou usando a linguagem C#, Entity Framework 5.0.0 e MSSQL Server 2012, fiz testes com MySQL 5.6 e também funcionou.
No formulário de pesquisa tenho os seguintes componentes:
01 TextBox com o nome de txtPesquisa;
01 Button com o nome de btnPesquisar;
01 DataGridView com o nome de dgvPesquisa;
01 Button com o nome de btnConsultar;
Segue abaixo código do formulário frmClienteSelecionar
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TesteConsulta
{
public partial class frmClienteSelecionar : Form
{
public frmClienteSelecionar()
{
InitializeComponent();
}
private void btnPesquisar_Click(object sender, EventArgs e) //Aqui faço uma consulta usando Linq e mando o resultado para o DataGridView
{
using (var ctx = new sigproEntities())
{
var resultado = from c in ctx.cliente
where c.Empresa_Id == 1 && c.ClienteNome.Contains(txtPesquisa.Text)
orderby c.ClienteNome
select new
{
c.Cliente_Id,
c.ClienteNome,
c.CpfCnpj
};
dgvConsulta.DataSource = resultado.ToList();
}
}
private void btnConsultar_Click(object sender, EventArgs e) //Evento do click do botão consultar.
{
int indice = dgvConsulta.CurrentRow.Index; //Variável que vai armazenar qual linha do DataGridView foi selecionada.
string temporaria = dgvConsulta[0, indice].Value.ToString(); //Variável que armazena a 1ª coluna do linha selecionada, que no caso da consulta realizada é o campo Cliente_Id.
frmMedico frm = new frmMedico(temporaria); //Chamo o formulário para qual quero passar o a variável.
frm.ShowDialog();
}
}
}
No formulário que vai receber os dados vamos deixa-lo da seguinte forma.
using System;
using System.Linq;
using System.Windows.Forms;
namespace TesteConsulta
{
public partial class frmMedico : Form
{
public frmMedico()
{
InitializeComponent();
}
public frmMedico(string idCliente) //Sobrecarga do método construtor original, mas que irá receber o código do cliente.
{
InitializeComponent();
this.Text = "ESTUDO - Consular Cliente";
using (var ctx = new sigproEntities()) //Crio o contexto
{
int id = Convert.ToInt32(idCliente); //converto o valor da string recebida do formulário de pesquisa para int.
var consulta = from c in ctx.cliente //Faço uma consulta Linq e paço como parâmetro de busca o ID do cliente.
where c.Cliente_Id == id
select new
{
c.Cliente_Id,
c.ClienteNome,
c.CpfCnpj,
c.DTCadastro,
c.DtNacimento
};
foreach (var item in consulta) //Onde paço os itens retornados da consulta para os campos da tela.
{
txtCodigo.Text = item.Cliente_Id.ToString();
txtNome.Text = item.ClienteNome;
txtCRM.Text = item.CpfCnpj;
txtDTCadastro.Text = item.DTCadastro.ToString();
txtDtNascimento.Text = item.DtNacimento.ToString();
}
}
}
}
}
Obrigado a todos pelo apoio. Espero que este simples exemplo possa ajudar a todos da comunidade.
28/07/2014
Joel Rodrigues
Um abraço e bons códigos.
Clique aqui para fazer login e interagir na Comunidade :)