Не удается обновить DataGridView из локальной базы данных - PullRequest
0 голосов
/ 09 января 2020

У меня есть:

  • 1 форма
    • 3 панели (1 слева для меню / 1 сверху и 1, которые заполняют другую часть моей страницы.
      • Несколько управляющих пользователей (столько же, сколько кнопок в меню)

В 1 из управляющих пользователей у меня есть 2 DataGridView. 2 Datagrid в Control User

Когда я нажимаю на одну из строк, открывается другая форма.

введите описание изображения здесь

Я получил данные из своей базы данных localhost. Когда я загружаю программу, все без проблем обновляется.

Когда я нажимаю "Validater cette pa ie" в открывшейся форме, он должен вставить это строки в другой таблице и удалите информацию из таблицы. PLUS refre sh обоих таблиц данных (поэтому строка, которую я удалил из первой таблицы данных, должна появиться во второй. И закройте форму.

Вставка и delete работает отлично, а также закрывает мою форму. Но не refre sh. Если вы заметили, я получил 2 кнопка refre sh, когда я нажимаю на них, она refre sh, но я хочу, чтобы она была автоматизированной c. (В противном случае сбивает с толку пользователя)

public void BtnValidationPaie_Click(object sender, EventArgs e)
    {
        try
        {
            string InsertPaie = "INSERT INTO paievalide(Prenom,AmiLocal,Extension,SBN,CheckIn,PaieHT,PaieTTC) VALUES('" + LblPrenom1.Text + "','" + LblAmiLocal1.Text + "', '" + LblExtension1.Text + "', '" + LblSBN1.Text + "', '" + LblCheckIn1.Text + "', '" + LblPaieHT1.Text + "', '" + LblPaieTTC1.Text + "')";
            MySqlFunctionEmploye.ExecuteQuery(InsertPaie);

            string deleteQuery = "DELETE FROM newpaie WHERE ID =" + LblInfo1.Text;
            MySqlFunctionEmploye.ExecuteQuery(deleteQuery);


            AlerteControl AlerteControl = new AlerteControl();
            AlerteControl.MajDatagrids(); // **Calling the method to update DATAGRIDVIEWS**   

            //FunctionAlerte FunctionAlerte = new FunctionAlerte();
            //FunctionAlerte.RefreshDataGridViewNewPaie(dataGridViewNewAlerte); **This is actually the function i call in my method above. If i call the function right away i got an error saying my datagrid is Null, which can't be null all the cells are filled up.**
            //FunctionAlerte.RefreshDataGridViewPaieValide(dataGridViewPaieValide);
            this.Close();

            Console.WriteLine("pas d'erreur");
        }catch(MySqlException exception)
        {
            MessageBox.Show(exception.ToString());
        }
    }

Вот мой метод для вызова функции.

public void MajDatagrids()
    {
        Console.WriteLine("Maj de MajDATAgrids"); **I checked if the method is called by this line and it is called.**
        FunctionAlerte.RefreshDataGridViewNewPaie(dataGridViewNewAlerte);
        FunctionAlerte.RefreshDataGridViewPaieValide(dataGridViewPaieValide);
    }

Я искал целую вечность, и я ничего не могу найти. Также поймите, что я новичок в c# и Visual Studio (Winform)

Редактировать: это код второй формы

public partial class InfosNewAlerte : Form
{
    public InfosNewAlerte()
    {
        InitializeComponent();

    }
    MySqlConnection connection = new MySqlConnection("Server=localhost; database=cap; user id=root; pwd=");
    public DataGridView dataGridViewNewAlerte;
    public DataGridView dataGridViewPaieValide;

    //
    // Au Chargement de la page, on recupere les infos de la DATAGRID-NEW-ALERTE et on les affiches sur le nouveau formulaire INFOS NEWS ALERTE FORMULAIRE
    //
    public void InfosNewAlerte_Load(object sender, EventArgs e)
    {
        LblInfo1.Text = AlerteControl.id;
        LblPrenom1.Text = AlerteControl.prenom;
        LblAmiLocal1.Text = AlerteControl.amilocal;
        LblSBN1.Text = AlerteControl.sbn;
        LblExtension1.Text = AlerteControl.extension;
        LblCheckIn1.Text = AlerteControl.checkin;
        LblPaieHT1.Text = AlerteControl.paieht;
        LblPaieTTC1.Text = AlerteControl.paiettc;
    }

    //
    // En cliquant sur le bouton valider de cette page alors vous envoyez cette paie a la partie finance et la SUPPRIME de New Alerte
    //

    public void BtnValidationPaie_Click(object sender, EventArgs e)
    {
        try
        {
            string InsertPaie = "INSERT INTO paievalide(Prenom,AmiLocal,Extension,SBN,CheckIn,PaieHT,PaieTTC) VALUES('" + LblPrenom1.Text + "','" + LblAmiLocal1.Text + "', '" + LblExtension1.Text + "', '" + LblSBN1.Text + "', '" + LblCheckIn1.Text + "', '" + LblPaieHT1.Text + "', '" + LblPaieTTC1.Text + "')";
            MySqlFunctionEmploye.ExecuteQuery(InsertPaie);

            string deleteQuery = "DELETE FROM newpaie WHERE ID =" + LblInfo1.Text;
            MySqlFunctionEmploye.ExecuteQuery(deleteQuery);


            AlerteControl AlerteControl = new AlerteControl();
          //  AlerteControl.MajDatagrids(); // Appel de la methode de MISE A JOUR DES DATAGRIDVIEWS   


            this.Close();
            FunctionAlerte FunctionAlerte = new FunctionAlerte();
            FunctionAlerte.RefreshDataGridViewNewPaie(dataGridViewNewAlerte);
            FunctionAlerte.RefreshDataGridViewPaieValide(dataGridViewPaieValide);
            Console.WriteLine("pas d'erreur");


        }
        catch(MySqlException exception)
        {
            MessageBox.Show(exception.ToString());
        }
    }
}

1 Ответ

0 голосов
/ 09 января 2020

вам просто нужно вызвать ваш метод при загрузке данных в gridView в конце вашего BtnValidationPaie_Click

   private readonly FunctionAlerte  frm1; //readonly is optional (For safety purposes)

    public partial class InfosNewAlerte : Form
{
    public InfosNewAlerte()
    {
        InitializeComponent();

    }
    MySqlConnection connection = new MySqlConnection("Server=localhost; database=cap; user id=root; pwd=");
    public DataGridView dataGridViewNewAlerte;
    public DataGridView dataGridViewPaieValide;

    //
    // Au Chargement de la page, on recupere les infos de la DATAGRID-NEW-ALERTE et on les affiches sur le nouveau formulaire INFOS NEWS ALERTE FORMULAIRE
    //
    public void InfosNewAlerte_Load(object sender, EventArgs e)
    {
        LblInfo1.Text = AlerteControl.id;
        LblPrenom1.Text = AlerteControl.prenom;
        LblAmiLocal1.Text = AlerteControl.amilocal;
        LblSBN1.Text = AlerteControl.sbn;
        LblExtension1.Text = AlerteControl.extension;
        LblCheckIn1.Text = AlerteControl.checkin;
        LblPaieHT1.Text = AlerteControl.paieht;
        LblPaieTTC1.Text = AlerteControl.paiettc;
    }

    //
    // En cliquant sur le bouton valider de cette page alors vous envoyez cette paie a la partie finance et la SUPPRIME de New Alerte
    //

    public void BtnValidationPaie_Click(object sender, EventArgs e)
    {
        try
        {
            string InsertPaie = "INSERT INTO paievalide(Prenom,AmiLocal,Extension,SBN,CheckIn,PaieHT,PaieTTC) VALUES('" + LblPrenom1.Text + "','" + LblAmiLocal1.Text + "', '" + LblExtension1.Text + "', '" + LblSBN1.Text + "', '" + LblCheckIn1.Text + "', '" + LblPaieHT1.Text + "', '" + LblPaieTTC1.Text + "')";
            MySqlFunctionEmploye.ExecuteQuery(InsertPaie);

            string deleteQuery = "DELETE FROM newpaie WHERE ID =" + LblInfo1.Text;
            MySqlFunctionEmploye.ExecuteQuery(deleteQuery);


            AlerteControl AlerteControl = new AlerteControl();
          //  AlerteControl.MajDatagrids(); // Appel de la methode de MISE A JOUR DES DATAGRIDVIEWS   




            frm1.RefreshDataGridViewNewPaie(dataGridViewNewAlerte);
            frm1.RefreshDataGridViewPaieValide(dataGridViewPaieValide);
            Console.WriteLine("pas d'erreur");

           this.Close();

        }
        catch(MySqlException exception)
        {
            MessageBox.Show(exception.ToString());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...