@tryvols
Front-End разработчик

Как получить значение 1-й ячейки из строки с выбранной ячейкой DataGrid?

Заполнение идет с бд:
static class Companies
    {
        public static System.Data.DataSet companies = new System.Data.DataSet();

        public static System.Data.DataView Get()
        {
            User.connect.Open();
            MySqlCommand cmd = new MySqlCommand("SELECT * FROM data", User.connect);
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            adapter.SelectCommand = cmd;
            adapter.Fill(companies);
            User.connect.Close();
            return new System.Data.DataView(companies.Tables[0]);
        }
    }

private void grid_Loaded(object sender, RoutedEventArgs e)
        {
            grid.ItemsSource = Companies.Get();
            Hide_grid_columns(grid);
        }

Затем наступает редактирование некой ячейки, и для добавления ее в БД нужно получить значение ячейки в первом столбце той же строки - суть id. Пытаюсь так:
private void grid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            TextBox t = e.EditingElement as TextBox;
            CheckBox c = e.EditingElement as CheckBox;
            string db_column = e.Column.Header.ToString();
            var ci = new DataGridCellInfo(e.Row.Item, grid.Columns[0]);
            var index = ci.Column.GetCellContent(ci.Item) as TextBlock;
            var query = @"";
            if (db_column.ToString() != "specification")
            {
                query = @"UPDATE data SET " + db_column + " = '" + t.Text + "' WHERE id = " + index.Text;
            }
            else
            {
                var b = 0;
                if (c.IsChecked == true)
                {
                    b = 1;
                }
                query = @"UPDATE data SET " + db_column + " = '" + b + "' WHERE id = " + index.Text;
            }

            try
            {
                User.connect.Open();
                MySqlCommand update = new MySqlCommand(query, User.connect);
                int numRowsUpdated = update.ExecuteNonQuery();
                User.connect.Close();
            }
            catch (MySqlException exSql)
            {
                Console.Error.WriteLine("Error - SafeMySql: SQL Exception: " + query);
                Console.Error.WriteLine(exSql.StackTrace);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("Error - SafeMySql: Exception: " + query);
                Console.Error.WriteLine(ex.StackTrace);
            }
            dispatcherTimer.Start();
        }

Но не работает.
Как можно достать ту ячейку, или же как-то по другому апдейтнуть строку в БД?
  • Вопрос задан
  • 933 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
MySqlCommandBuilder.
Ответ написан
@tryvols Автор вопроса
Front-End разработчик
Companies.adapter.Update((System.Data.DataSet)grid.ItemsSource);
выдает ошибку преобразования, как ее справить?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы