Обновите базу данных при смене ячейки вместо RowValidated - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь найти способ сделать следующий код в CellValueChanged, CellEndEdit или SelectionChanged в DataGridView, но, к сожалению, «изменения» всегда кажутся пустыми, я искал разные посты, и то, что было рекомендовано, было действительно, чтобы использовать CellValueChanged, CellEndEdit или SelectionChanged, но я не смог добиться того, что я хочу:

private void control_RowValidated(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dataGridViewReferer = this.Controls.Find(dataGridViewSender, true).FirstOrDefault() as DataGridView;

    DataTable changes = ((DataTable)dataGridViewReferer.DataSource).GetChanges();

    if (changes != null)
    {
        conn = new MySqlConnection(connStr);
        conn.Open();

        command = new MySqlCommand(@"SELECT * from item WHERE id_type=@param_0001 and id_parent=@param_0002", conn);

        command.Parameters.AddWithValue("@param_0001", 5);
        command.Parameters.AddWithValue("@param_0002", 2);

        commandInsert = new MySqlCommand(@"INSERT INTO logbook.item
                                    (id_type,id_parent,column0001,column0002,column0003,column0004,column0005,column0006,column0007,column0008,column0009,column0010,column0011,column0012,
                                    column0013,column0014,column0015,column0016,column0017,column0018,column0019,column0020,column0021,column0022,column0023,column0024,column0025,
                                    column0026,column0027,column0028,column0029,column0030,column0031,column0032,column0033,column0034,column0035,column0036,column0037,column0038,
                                    column0039,column0040,column0041,column0042,column0043,column0044,column0045,column0046,column0047,column0048,column0049,column0050)
                                    VALUES
                                    (@id_type,@id_parent,@column0001,@column0002,@column0003,@column0004,@column0005,@column0006,@column0007,@column0008,@column0009,@column0010,
                                    @column0011,@column0012,@column0013,@column0014,@column0015,@column0016,@column0017,@column0018,@column0019,@column0020,@column0021,@column0022,
                                    @column0023,@column0024,@column0025,@column0026,@column0027,@column0028,@column0029,@column0030,@column0031,@column0032,@column0033,@column0034,
                                    @column0035,@column0036,@column0037,@column0038,@column0039,@column0040,@column0041,@column0042,@column0043,@column0044,@column0045,@column0046,
                                    @column0047,@column0048,@column0049,@column0050)", conn);

        commandInsert.Parameters.AddWithValue("@id_type", 5);
        commandInsert.Parameters.AddWithValue("@id_parent", 2);
        commandInsert.Parameters.Add("@column0001", MySqlDbType.LongText, 15, "column0001");
        commandInsert.Parameters.Add("@column0002", MySqlDbType.LongText, 15, "column0002");
        commandInsert.Parameters.Add("@column0003", MySqlDbType.LongText, 15, "column0003");
        commandInsert.Parameters.Add("@column0004", MySqlDbType.LongText, 15, "column0004");
        commandInsert.Parameters.Add("@column0005", MySqlDbType.LongText, 15, "column0005");
        commandInsert.Parameters.Add("@column0006", MySqlDbType.LongText, 15, "column0006");
        commandInsert.Parameters.Add("@column0007", MySqlDbType.LongText, 15, "column0007");
        commandInsert.Parameters.Add("@column0008", MySqlDbType.LongText, 15, "column0008");
        commandInsert.Parameters.Add("@column0009", MySqlDbType.LongText, 15, "column0009");
        commandInsert.Parameters.Add("@column0010", MySqlDbType.LongText, 15, "column0010");
        commandInsert.Parameters.Add("@column0011", MySqlDbType.LongText, 15, "column0011");
        commandInsert.Parameters.Add("@column0012", MySqlDbType.LongText, 15, "column0012");
        commandInsert.Parameters.Add("@column0013", MySqlDbType.LongText, 15, "column0013");
        commandInsert.Parameters.Add("@column0014", MySqlDbType.LongText, 15, "column0014");
        commandInsert.Parameters.Add("@column0015", MySqlDbType.LongText, 15, "column0015");
        commandInsert.Parameters.Add("@column0016", MySqlDbType.LongText, 15, "column0016");
        commandInsert.Parameters.Add("@column0017", MySqlDbType.LongText, 15, "column0017");
        commandInsert.Parameters.Add("@column0018", MySqlDbType.LongText, 15, "column0018");
        commandInsert.Parameters.Add("@column0019", MySqlDbType.LongText, 15, "column0019");
        commandInsert.Parameters.Add("@column0020", MySqlDbType.LongText, 15, "column0020");
        commandInsert.Parameters.Add("@column0021", MySqlDbType.LongText, 15, "column0021");
        commandInsert.Parameters.Add("@column0022", MySqlDbType.LongText, 15, "column0022");
        commandInsert.Parameters.Add("@column0023", MySqlDbType.LongText, 15, "column0023");
        commandInsert.Parameters.Add("@column0024", MySqlDbType.LongText, 15, "column0024");
        commandInsert.Parameters.Add("@column0025", MySqlDbType.LongText, 15, "column0025");
        commandInsert.Parameters.Add("@column0026", MySqlDbType.LongText, 15, "column0026");
        commandInsert.Parameters.Add("@column0027", MySqlDbType.LongText, 15, "column0027");
        commandInsert.Parameters.Add("@column0028", MySqlDbType.LongText, 15, "column0028");
        commandInsert.Parameters.Add("@column0029", MySqlDbType.LongText, 15, "column0029");
        commandInsert.Parameters.Add("@column0030", MySqlDbType.LongText, 15, "column0030");
        commandInsert.Parameters.Add("@column0031", MySqlDbType.LongText, 15, "column0031");
        commandInsert.Parameters.Add("@column0032", MySqlDbType.LongText, 15, "column0032");
        commandInsert.Parameters.Add("@column0033", MySqlDbType.LongText, 15, "column0033");
        commandInsert.Parameters.Add("@column0034", MySqlDbType.LongText, 15, "column0034");
        commandInsert.Parameters.Add("@column0035", MySqlDbType.LongText, 15, "column0035");
        commandInsert.Parameters.Add("@column0036", MySqlDbType.LongText, 15, "column0036");
        commandInsert.Parameters.Add("@column0037", MySqlDbType.LongText, 15, "column0037");
        commandInsert.Parameters.Add("@column0038", MySqlDbType.LongText, 15, "column0038");
        commandInsert.Parameters.Add("@column0039", MySqlDbType.LongText, 15, "column0039");
        commandInsert.Parameters.Add("@column0040", MySqlDbType.LongText, 15, "column0040");
        commandInsert.Parameters.Add("@column0041", MySqlDbType.LongText, 15, "column0041");
        commandInsert.Parameters.Add("@column0042", MySqlDbType.LongText, 15, "column0042");
        commandInsert.Parameters.Add("@column0043", MySqlDbType.LongText, 15, "column0043");
        commandInsert.Parameters.Add("@column0044", MySqlDbType.LongText, 15, "column0044");
        commandInsert.Parameters.Add("@column0045", MySqlDbType.LongText, 15, "column0045");
        commandInsert.Parameters.Add("@column0046", MySqlDbType.LongText, 15, "column0046");
        commandInsert.Parameters.Add("@column0047", MySqlDbType.LongText, 15, "column0047");
        commandInsert.Parameters.Add("@column0048", MySqlDbType.LongText, 15, "column0048");
        commandInsert.Parameters.Add("@column0049", MySqlDbType.LongText, 15, "column0049");
        commandInsert.Parameters.Add("@column0050", MySqlDbType.LongText, 15, "column0050");

        commandUpdate = new MySqlCommand(@"UPDATE logbook.item
                                    SET
                                    id_item = @id_item,id_type = @id_type,id_parent = @id_parent,column0001 = @column0001,column0002 = @column0002,column0003 = @column0003,
                                    column0004 = @column0004,column0005 = @column0005,column0006 = @column0006,column0007 = @column0007,column0008 = @column0008,column0009 = @column0009,
                                    column0010 = @column0010,column0011 = @column0011,column0012 = @column0012,column0013 = @column0013,column0014 = @column0014,column0015 = @column0015,
                                    column0016 = @column0016,column0017 = @column0017,column0018 = @column0018,column0019 = @column0019,column0020 = @column0020,column0021 = @column0021,
                                    column0022 = @column0022,column0023 = @column0023,column0024 = @column0024,column0025 = @column0025,column0026 = @column0026,column0027 = @column0027,
                                    column0028 = @column0028,column0029 = @column0029,column0030 = @column0030,column0031 = @column0031,column0032 = @column0032,column0033 = @column0033,
                                    column0034 = @column0034,column0035 = @column0035,column0036 = @column0036,column0037 = @column0037,column0038 = @column0038,column0039 = @column0039,
                                    column0040 = @column0040,column0041 = @column0041,column0042 = @column0042,column0043 = @column0043,column0044 = @column0044,column0045 = @column0045,
                                    column0046 = @column0046,column0047 = @column0047,column0048 = @column0048,column0049 = @column0049,column0050 = @column0050
                                    WHERE id_item = @id_item;", conn);

        commandUpdate.Parameters.Add("id_item", MySqlDbType.LongText, 15, "id_item");
        commandUpdate.Parameters.Add("@id_type", MySqlDbType.LongText, 15, "id_type");
        commandUpdate.Parameters.Add("@id_parent", MySqlDbType.LongText, 15, "id_parent");
        commandUpdate.Parameters.Add("@column0001", MySqlDbType.LongText, 15, "column0001");
        commandUpdate.Parameters.Add("@column0002", MySqlDbType.LongText, 15, "column0002");
        commandUpdate.Parameters.Add("@column0003", MySqlDbType.LongText, 15, "column0003");
        commandUpdate.Parameters.Add("@column0004", MySqlDbType.LongText, 15, "column0004");
        commandUpdate.Parameters.Add("@column0005", MySqlDbType.LongText, 15, "column0005");
        commandUpdate.Parameters.Add("@column0006", MySqlDbType.LongText, 15, "column0006");
        commandUpdate.Parameters.Add("@column0007", MySqlDbType.LongText, 15, "column0007");
        commandUpdate.Parameters.Add("@column0008", MySqlDbType.LongText, 15, "column0008");
        commandUpdate.Parameters.Add("@column0009", MySqlDbType.LongText, 15, "column0009");
        commandUpdate.Parameters.Add("@column0010", MySqlDbType.LongText, 15, "column0010");
        commandUpdate.Parameters.Add("@column0011", MySqlDbType.LongText, 15, "column0011");
        commandUpdate.Parameters.Add("@column0012", MySqlDbType.LongText, 15, "column0012");
        commandUpdate.Parameters.Add("@column0013", MySqlDbType.LongText, 15, "column0013");
        commandUpdate.Parameters.Add("@column0014", MySqlDbType.LongText, 15, "column0014");
        commandUpdate.Parameters.Add("@column0015", MySqlDbType.LongText, 15, "column0015");
        commandUpdate.Parameters.Add("@column0016", MySqlDbType.LongText, 15, "column0016");
        commandUpdate.Parameters.Add("@column0017", MySqlDbType.LongText, 15, "column0017");
        commandUpdate.Parameters.Add("@column0018", MySqlDbType.LongText, 15, "column0018");
        commandUpdate.Parameters.Add("@column0019", MySqlDbType.LongText, 15, "column0019");
        commandUpdate.Parameters.Add("@column0020", MySqlDbType.LongText, 15, "column0020");
        commandUpdate.Parameters.Add("@column0021", MySqlDbType.LongText, 15, "column0021");
        commandUpdate.Parameters.Add("@column0022", MySqlDbType.LongText, 15, "column0022");
        commandUpdate.Parameters.Add("@column0023", MySqlDbType.LongText, 15, "column0023");
        commandUpdate.Parameters.Add("@column0024", MySqlDbType.LongText, 15, "column0024");
        commandUpdate.Parameters.Add("@column0025", MySqlDbType.LongText, 15, "column0025");
        commandUpdate.Parameters.Add("@column0026", MySqlDbType.LongText, 15, "column0026");
        commandUpdate.Parameters.Add("@column0027", MySqlDbType.LongText, 15, "column0027");
        commandUpdate.Parameters.Add("@column0028", MySqlDbType.LongText, 15, "column0028");
        commandUpdate.Parameters.Add("@column0029", MySqlDbType.LongText, 15, "column0029");
        commandUpdate.Parameters.Add("@column0030", MySqlDbType.LongText, 15, "column0030");
        commandUpdate.Parameters.Add("@column0031", MySqlDbType.LongText, 15, "column0031");
        commandUpdate.Parameters.Add("@column0032", MySqlDbType.LongText, 15, "column0032");
        commandUpdate.Parameters.Add("@column0033", MySqlDbType.LongText, 15, "column0033");
        commandUpdate.Parameters.Add("@column0034", MySqlDbType.LongText, 15, "column0034");
        commandUpdate.Parameters.Add("@column0035", MySqlDbType.LongText, 15, "column0035");
        commandUpdate.Parameters.Add("@column0036", MySqlDbType.LongText, 15, "column0036");
        commandUpdate.Parameters.Add("@column0037", MySqlDbType.LongText, 15, "column0037");
        commandUpdate.Parameters.Add("@column0038", MySqlDbType.LongText, 15, "column0038");
        commandUpdate.Parameters.Add("@column0039", MySqlDbType.LongText, 15, "column0039");
        commandUpdate.Parameters.Add("@column0040", MySqlDbType.LongText, 15, "column0040");
        commandUpdate.Parameters.Add("@column0041", MySqlDbType.LongText, 15, "column0041");
        commandUpdate.Parameters.Add("@column0042", MySqlDbType.LongText, 15, "column0042");
        commandUpdate.Parameters.Add("@column0043", MySqlDbType.LongText, 15, "column0043");
        commandUpdate.Parameters.Add("@column0044", MySqlDbType.LongText, 15, "column0044");
        commandUpdate.Parameters.Add("@column0045", MySqlDbType.LongText, 15, "column0045");
        commandUpdate.Parameters.Add("@column0046", MySqlDbType.LongText, 15, "column0046");
        commandUpdate.Parameters.Add("@column0047", MySqlDbType.LongText, 15, "column0047");
        commandUpdate.Parameters.Add("@column0048", MySqlDbType.LongText, 15, "column0048");
        commandUpdate.Parameters.Add("@column0049", MySqlDbType.LongText, 15, "column0049");
        commandUpdate.Parameters.Add("@column0050", MySqlDbType.LongText, 15, "column0050");

        mySqlDataAdapter.InsertCommand = commandInsert;
        mySqlDataAdapter.UpdateCommand = commandUpdate;
        mySqlDataAdapter.SelectCommand = command;
        mySqlDataAdapter.Update(changes);

        ((DataTable)dataGridViewReferer.DataSource).AcceptChanges();
        ((DataTable)dataGridViewReferer.DataSource).GetChanges();

        DataView dataViewSender = new DataView();
        DataTable dataTableSender = new DataTable();

        ((DataTable)dataGridViewReferer.DataSource).Rows.Clear();

        mySqlDataAdapter.Fill((DataTable)dataGridViewReferer.DataSource);

        dataGridViewReferer.Update();
        dataGridViewReferer.Refresh();
    }
}

Как лучше всего это сделать, когда я нажимаю на другую ячейку?

Пожалуйста, обратите внимание, что этот код уже работает с событием RowValidated в DataGridView.

Не могли бы вы мне помочь, пожалуйста?

Спасибо за ваше время и помощь, это очень ценится.

...