Мой код не находит источник данных datagridview после запуска другой формы в то же время - PullRequest
0 голосов
/ 21 мая 2019

Я устанавливаю ИТ-проект для школы, и у меня возникла проблема с представлением данных в c # Winform.

Я создал первую форму с сеткой данных, подключенной к моей БД, и я хочу создать кнопку, которая может при необходимости удалить строку из таблицы данных.

Чтобы убедиться, что клиент не допустил ошибки, я создаю другую форму, где он спрашивает: «Вы хотите удалить эту строку? (Да / нет)», это базовая форма (метка + кнопка).

Но когда я хочу закрыть эту форму, я перехожу к функции в моей первой таблице данных, которая инициализирует эту сетку с самого начала программы, и в этом коде я использую Datagridview.DataSource для создания цикла.

Проблема отмечена здесь, и когда я печатаю свой DataSource, он ничего не печатает, как будто нет DataSource ...

Кто-нибудь причина или как сохранить DataSource от предыдущегоформа, когда вы всплываете новое?

Мой код для начальной сетки

public void InitDatagrid()
        {
            //Initialize the tools
            CancelMod.Visible = false;
            ApplyMod.Visible = false;
            Modifie.Visible = true;
            Prevbtn.Visible = true;
            ClientCommand.Enabled = true;
            Client_Pieces.Enabled = true;
            Prices.Enabled = true;
            PieceCommand.Enabled = true;
            Pieces.Enabled = true;
            textBox1.Enabled = true;
            RowAdd.Visible = false;
            RowDelete.Visible = false;
            textboxDel.Visible = false;
            labelDel.Visible = false;
            dataGridView1.EditMode = 
            DataGridViewEditMode.EditProgrammatically;
            textBox1.Text = "";
            this.pieceTableAdapter.Fill(this.mykitboxDataSet5.piece);
            //Put the color of the columns as white (initial color)
            for (var i = 0; i < ((DataTable)dataGridView1.DataSource).Columns.Count; i++)
            {
                dataGridView1.Columns[i].DefaultCellStyle.BackColor = Color.White;
            }

            int count = ((DataTable)dataGridView1.DataSource).Columns.Count;
            //Put the changed cells color as white (initial color) 
            if (count == 8)
            {
                dataGridView2.EditMode = 
                DataGridViewEditMode.EditProgrammatically;
                DeleteCommand.Visible = false;
                textBoxDel2.Visible = false;
                labelDel2.Visible = false;
                for (int i = 0; i < Convert.ToInt32(dataGridView1.Rows.Count.ToString()); i++)
                {
                    //Column = payment_status and command_status
                    dataGridView1.Rows[i].Cells[6].Style.BackColor = Color.White;
                    dataGridView1.Rows[i].Cells[7].Style.BackColor = Color.White;
                }
            }
        }

Вот мой код для всплывающего окна

        public PopUpDel(string codedb, string text, DataGridView ds)
        {
            this.codedb = codedb;
            InitializeComponent();
            code.Text = codedb;
            label1.Text = text;
            Console.WriteLine(ds);
        }

        private void yes_Click(object sender, EventArgs e)
        {
            SKGridPage sk = new SKGridPage();

            sk.SqlConnection();
            MySqlCommand command = conn.CreateCommand();
            command.CommandText = string.Format("DELETE FROM piece WHERE code = '{0}'", this.codedb);
            Console.WriteLine(command.CommandText);
            try
            {
                conn.Open();
                command.ExecuteNonQuery();
            }
            catch (Exception x)
            {
                Console.WriteLine(x.Message);
            }
            conn.Close();

            this.Close();
            sk.InitDatagrid();
        }

        private void no_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
...