Загрузка данных MySQL в сетку данных с существующими столбцами, включая комбинированные списки и флажки - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь загрузить данные в сетку данных (проект winform).У меня нет проблем с загрузкой «пустых» представлений данных, но в этом есть существующие столбцы, которые содержат некоторые текстовые поля, комбинированные списки и флажки.Столбцы были созданы с помощью дизайнера.Мне нужно загрузить данные в эти существующие столбцы.Приведенный ниже код загружает данные, но создает новые столбцы в сетке данных.Я не хочу этогоМне нужно заполнить существующие столбцы.Как я могу достичь этого?Вот мой текущий код.Я новичок, поэтому, если бы вы могли помочь мне с примером, было бы здорово.

private void LoadGrid()
    {
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        MySqlCommand cmd = new MySqlCommand(@"select cat, operation, location, description, req_met, tol_minus_met, tol_plus_met,req_imp, tol_minus_imp, tol_plus_imp, measurment, tool, external, conform, date_inspected from shopmanager.inspection_reports where products_product_id = @products_product_id;", con);

        try
        {
            con.Open();
            cmd.Parameters.AddWithValue("@products_product_id", textBox3.Text);
            DataTable dt = new DataTable();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(dt);
            dataGridView1.DataSource = dt;

            cmd.Parameters.Clear();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        con.Close();
    }

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете заставить его работать вручную, и установка dataGridView1.AutoGenerateColumns = false; поможет, потому что тогда ваш DGV будет жаловаться на столбцы, которые он пытается найти, но не может ...

.. но честно, выне следует делать ничего подобного.Это медленно, неэффективно, слабо типизировано и плохо структурировано.Взгляните на официальный учебник MSDN по https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx - прочитайте пошаговое руководство «Создание простого приложения для обработки данных»

По сути, вы должны предпринять следующие шаги:

  1. добавить набор данных в проект
  2. подключить его к базе данных
  3. перетащить таблицу inspe_reports в набор данных
  4. сохранить, переключиться на форму
  5. dropузел inspe_reports из окна источников данных на форму

Чтобы настроить запрос для его фильтрации, щелкните правой кнопкой мыши на созданном табличном адаптере и выберите «Настроить» - вы сможете пройтись по мастеру, которыйпозволяет вам параметризовать запрос.Код внутри формы будет нуждаться в небольшой корректировке, поэтому вы передадите содержимое textbox3 в качестве параметра запроса

VS запишет весь код, который вы написали (и многое другое, и даже лучше [извините])) за кулисами и соедините все это так, чтобы у вас была сетка в форме со столбцами, которые должным образом привязаны к данным и т. д. Займите около 30 секунд, и это сработает сразу, будет надежным, лучше инкапсулированным, выиграноне иметь обработчиков событий нажатия кнопки, заполненных полями sql-in-strings ..

Пожалуйста, назовите ваши элементы управления в соответствии с тем, что они делают - textBox3 и dataGridView1 - ужасные имена для элементов управления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...