C#/SQL Переключение между таблицами sql с помощью выпадающего списка в одном представлении сетки данных

#c# #sql #sql-server

Вопрос:

Я разрабатываю проект, но возникла идея и возникли сомнения, вместо того, чтобы накладывать 3 представления данных друг на друга и помещать видимое и невидимое, делайте это автоматически в одном представлении данных, например, у меня есть поле со списком, если вы выберете в поле со списком пункт «Люди» появляется в таблице базы данных «Люди», но если вы выберете таблицу «Возраст», она появится в том же представлении данных, что и таблица, может кто-нибудь объяснить мне, как это сделать?

Комментарии:

1. Используйте адаптер данных, чтобы поместить результаты запроса в таблицу данных. Сделайте datatable источником данных DGV. Все, что вам нужно сделать, это изменить запрос к базе данных в зависимости от выбора выпадающего списка. См.: docs.microsoft.com/en-us/dotnet/api/…

Ответ №1:

Вы можете сделать это, создав этот метод, содержащий параметр для имени вашей таблицы

Я предполагаю, что вы используете sql в качестве своей базы данных

 public void SelectData(string tableName)
{
    using (SqlConnection cn = new SqlConnection("YourConnectionString")
    {
         cn.Open();
         string query = "SELECT * FROM "   tableName;
         SqlDataAdapter adapter = new SqlDataAdapter (query, cn);
         DataTable table = new DataTable();
         adapter.Fill(table);

         DataGridView1.DataSource = table;
    }
}
 

Затем поместите метод выше внутри SelectedIndexChanged события ComboBox, а затем напишите

 private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    SelectData(ComboBox1.SelectedIndex.ToString());
}
 

Ответ №2:

Оставьте свойство AutoGenerateColumns для datagridview равным true.

Теперь в событии onchange для выпадающего списка —

  1. Удалите столбцы из представления datagridview
  2. Свяжите новый источник данных в соответствии с конкретным случаем (Люди, возраст и т. Д.)

Вы можете добавить вызов базы данных для извлечения новой таблицы в раскрывающемся списке события onchange или можете сначала привести все таблицы сразу и просто привязать нужную таблицу из набора данных.