#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 для выпадающего списка —
- Удалите столбцы из представления datagridview
- Свяжите новый источник данных в соответствии с конкретным случаем (Люди, возраст и т. Д.)
Вы можете добавить вызов базы данных для извлечения новой таблицы в раскрывающемся списке события onchange или можете сначала привести все таблицы сразу и просто привязать нужную таблицу из набора данных.