How to return the value of an Entity Framework field c#

Asked

Viewed 1,027 times

0

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;
using AuditContatos.Dados;
using AuditContatos.Properties;

namespace AuditContatos
{
    public partial class Form1 : Form
    {   
        public Form1()
        {
            InitializeComponent();
        }

        ContatosAuditEntities objetoEntidade = new ContatosAuditEntities();

        protected void select()
        {
            dataGridViewMostrarContatos.DataSource = objetoEntidade.select_contato();
        }

        public void cadastrar_contato()
        {
            objetoEntidade.inserir_contato(txtNomeCli.Text, txtEmailCli.Text, maskedTxtTelefoneCli.Text, txtResponsavelCli.Text, txtIdLicencaCli.Text, txtIdAcessoCli.Text, txtSenhaCli.Text, dateTimePickerUltimoAcessoCli.Text, txtMelhoriaRealizadaCli.Text, txtIdPortalCli.Text, txtIdServicoCli.Text, txtIdVersaoAplicacaoCli.Text);
            objetoEntidade.SaveChanges();
        }

       //atualiza o grid e a data e hora
        private void Form1_Load(object sender, EventArgs e)
        {
            //select();
            timer1_Tick(e, e);
        }

        //sai da aplicação
        private void buttonSair_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        //parametros data e hora
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime dataHora = DateTime.Now; //a cada um segundo atualiza a variavel hora
            tsslDateTime.Text = "Data:  " + dataHora.ToLongDateString() + "                         Hora:  " + dataHora.ToLongTimeString();
        }

        //atualiza
        private void buttonAtualizar_Click(object sender, EventArgs e)
        {
            select();
        }


        //edita
        private void buttonEditar_Click(object sender, EventArgs e)
        {
            tabControlClientes.SelectedTab = tabPageManutencaoCliente;
            txtCodigoCli.Enabled = true;
        }

        //cadastra
        private void buttonCadastrar_Click(object sender, EventArgs e)
        {
            tabControlClientes.SelectedTab = tabPageManutencaoCliente;
            txtCodigoCli.Enabled = false;
        }

        //confirma alteração
        private void buttonConfirmar_Click(object sender, EventArgs e)
        {
            if (txtCodigoCli.Enabled == true)
            {
                objetoEntidade.update_contato(Convert.ToInt32(txtCodigoCli.Text), txtNomeCli.Text, txtEmailCli.Text, maskedTxtTelefoneCli.Text, txtResponsavelCli.Text, txtIdLicencaCli.Text, txtIdAcessoCli.Text, txtSenhaCli.Text, dateTimePickerUltimoAcessoCli.Text, txtMelhoriaRealizadaCli.Text, txtIdPortalCli.Text, txtIdServicoCli.Text, txtIdVersaoAplicacaoCli.Text);
                objetoEntidade.SaveChanges();
                MessageBox.Show("Dados Alterados", "Confirmação.", MessageBoxButtons.OK);
                tabControlClientes.SelectedTab = tabPageDadosCliente;
                select();
            }
            else
            {
                cadastrar_contato();
                objetoEntidade.SaveChanges();
                MessageBox.Show("Cadastro concluido.", "Confirmação.", MessageBoxButtons.OK);
                tabControlClientes.SelectedTab = tabPageDadosCliente;
                select();
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Deseja realmente sair?", "Encerrando o Sistema...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

        private void txtCodigoCli_Leave(object sender, EventArgs e)
        {

        }
    }
}

Print do Visual

For better understanding I put the code and the look.

I need that when entering the client code in the "code" field it already brings the other data filled. How do I do this?

  • in the update part Oce only put select();? would be just that?

1 answer

1

Using the Leave event, you search through the code, save in a variable the returned object and assign it to the controls. Sort of like this:

private void txtCodigo_Leave(object sender, System.EventArgs e)
{
   // Recupera os dados
   Entity obj = db.Entity.Find(x => x.Codigo.Equals(int.Parse((sender as TextBox).Text))).FirstOrDefault();
   txtNome.Text = obj.Nome;
   txtEmail.Text = obj.Email;
   //... demais campos
}

EDIT: Explanation

private void txtCodigo_Leave(object sender, System.EventArgs e)
{
   //db.Entity - É o seu contexto de acesso ao banco de dados, no seu caso, o 'ContatosAuditEntities objetoEntidade'
   //Você precisa ter um método que retorna um objeto completo, ou seja, uma linha completa do seu registro, para uma variável VAR ou do tipo do Objeto esperado
   //Onde 'Entity = Tipo do Objeto' e o 'db.Entity.Find(...)...' é o método.
   Entity obj = db.Entity.Find(x => x.Codigo.Equals(int.Parse((sender as TextBox).Text))).FirstOrDefault();
   //Daí então atribuir para seus controles
   txtNome.Text = obj.Nome;
   txtEmail.Text = obj.Email;
   //... demais campos
}
  • In mine it did not appear db.

  • Follow the full code.

  • @Fabricio the db is your objectEntities... I gave a "more generic" example where Entity tbm would be the name of your entity.

  • So the objectEntities don’t give me those options that you put... I’m sorry but I’m just a beginner so I have a lot of questions... This application to facilitate my work rsrs I decided to impress the boss.

  • I gave a comment in the example to try to help you get a solution, without having to pass it to you, so you can develop your reasoning logic and think more about . net

  • I couldn’t find the logic

  • Put your ContatosAuditEntities also

  • How do I do it? I can’t find her.

Show 3 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.