У меня есть таблица Person и таблица PersonRole с ForeignKey на Person.Role ==> PersonRole.ID .
Мой Combobox привязан к данным с использованием свойств DataSource, Display- & ValueMember, поэтому он автоматически обновляется, когда я выбираю другую роль в другом элементе управления.Однако в поле со списком отображается поле Person.Role (= ForeignKey integer), но мне нужно, чтобы оно показывало PersonRole.Name .Но нет встроенной опции, которую я могу найти, чтобы связать ее с внешним ключом?Конечно, я могу связать его с PersonRole , но тогда он не будет автоматически обновляться при изменении активной строки в Person .
На фотографиях: ЧтоУ меня есть и Что я хочу
Я пытался использовать QueryBuilder Результат построителя запросов , но, очевидно, это не работает (Ошибка: «Схемавозвращаемый запросом отличается от базового запроса ".) , поскольку мне не разрешено, чтобы мои столбцы отличались от данных (я думаю).
Затем я попытался сделать это с помощью кода в FormLoad:
using (SQLiteConnection cnn = new SQLiteConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
{
try
{
string query = "SELECT PersonRole.ID, PersonRole.Name FROM Person INNER JOIN PersonRole ON Person.ID = PersonRole.ID";
SQLiteDataAdapter da = new SQLiteDataAdapter(query, cnn);
cnn.Open();
DataSet ds = new DataSet();
da.Fill(ds, "Role");
cboRole.ValueMember = "ID";
cboRole.DisplayMember = "Name";
cboRole.DataSource = ds.Tables["Role"];
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Но это тоже не работает.Может быть, 2 набора данных должны быть связаны или .. я не знаю больше ... Это должно быть что-то простое, я уверен.Я думаю, что это должно быть возможно без кода в любом случае.