У меня есть сетевое представление, которое я уже связал с базой данных, у меня есть комбинированный список, который также ссылается на базу данных.Моя цель состоит в том, чтобы при изменении значения поля со списком вид сетки изменялся в зависимости от значения измененного поля со списком.
Это привязка winform C # с mssql.
Мое представление таблицы данных, связанное с
RegistrationEvent.BibNumber,RegistrationEvent.RaceTime,User.FirstName,User.LastName, Runner.CountryCode.
Таблица User содержит Email, FirstName, LastName
Таблица Runnercontain Email, Gender, CountryCode
Таблица RegistrationEvent содержит BibNumber, RaceTime, EventId
Таблицы Marathon и RegistrationEvent, связанные через таблицу Event, содержат MarathonId, EventName, EventId
Мой комбинированный список, связанный с tb Marathon, содержит MarathonId, MarathonName, CityName, CountryCode, YearHeld.
Отображаемое значение элемента Combobox MarathonNameсодержать марафон 2011, марафон 2012, марафон 2013, марафон 2014, марафон 2015.
Я хочу, чтобы, когда я выбираю 1 из этих отображаемых элементов, сетка данных с изменениями в соответствии со списком
Этодля связывания сетки данных с конкретными таблицами и столбцами:
private void buttonQueryDb_Click(object sender, EventArgs e)
{
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT [RegistrationEvent].[BibNumber], [RegistrationEvent].[RaceTime], [User].[FirstName], [User].[LastName], [Runner].[CountryCode] " +"FROM [User], [Runner], [RegistrationEvent] WHERE[User].Email = [Runner].Email AND [RegistrationEvent].RegistrationEventId = [Runner].RunnerId AND [RegistrationEvent].RaceTime IS NOT NULL", sqlCon);
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
dgv1.DataSource = dtbl;
dgv1.ReadOnly = true;
dgv1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
}
Это для связывания комбинированного списка с таблицей
using (Model1 db = new Model1())
{
db.Configuration.ProxyCreationEnabled = false;
marathonevent.DataSource = db.Marathons.ToList();
marathonevent.ValueMember = "MarathonName";
marathonevent.DisplayMember = "MarathonName";
}
Я использовал это для заполнения сетки данных с помощью комбинированного списка
private void marathonevent_SelectionChangeCommitted(object sender, EventArgs e)
{
Marathon obj = marathonevent.SelectedItem as Marathon;
using (Model1 db = new Model1())
{
db.Configuration.ProxyCreationEnabled = false;
var query = (from ccode in db.Runners
where ccode.CountryCode == obj.CountryCode
select new { Country = ccode.Country });
dgv1.DataSource = query.ToList();
}
Это показывает только данные из таблицы Runner, поэтому я использовалэто:
private void marathonevent_SelectionChangeCommitted(object sender, EventArgs e)
{
Marathon obj = marathonevent.SelectedItem as Marathon;
using (Model1 db = new Model1())
{
db.Configuration.ProxyCreationEnabled = false;
var query = (from ccode in db.Runners
from fn in db.Users
from ln in db.Users
from bib in db.RegistrationEvents
from rctime in db.RegistrationEvents
where ccode.CountryCode == obj.CountryCode
select new { Country = ccode.Country, User = fn.FirstName,ln.LastName, RegistrationEvent = bib.BibNumber, rctime.RaceTime}) ;
dgv1.DataSource = query.ToList();
dgv1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
winform замораживается
Я хочу выбрать значение в MarathonName, и представление данных будет меняться в соответствии со значением в выпадающем списке, показывая данные.Все эти данные объединены в mssql.