Динамическое обновление каскадного поля со списком - PullRequest
0 голосов
/ 17 мая 2019

У меня есть таблица в SQL Server с контактами. Я связал эту таблицу со списком в winforms, используя c #.

Когда я выбираю контакт в комбо, метод заполняет некоторые текстовые поля свойствами этого контакта, чтобы пользователь мог изменить то, что ему нравится, чем обновить (нажав кнопку) этот контакт в БД.

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

p.s. У меня есть модель для каждой таблицы (ContactModel.cs, ecc), с проп и ctor's

Таким образом, вопрос заключается в следующем: как я могу установить combobox.selecteditem (когда пользователь выбирает контакт), чтобы соответствовать значению из выбранного контакта?

Также я использую Dapper.

public class ContactModel
{
    public int ContactID{ get; set; } // Primary
    // some other props
    public int RefContactCommon { get; set; } // Reference to Common table
}

public class CommonModel
{

    public int CommonID { get; set; } // Primary
    public string CommonName { get; set; } // varchar(32)
}

Так я обычно подключаю все комбо

combo2.ValueMember = "propID";
combo2.DisplayMember = "propName";
combo2.DataSource = SQLHighway.Loadthatprop();

1 Ответ

0 голосов
/ 17 мая 2019

Вы можете просто установить SelectedItem в выпадающем списке внешнего ключа, приведя элемент из основного ComboBox

private void comboBoxObject_SelectedIndexChanged(object sender, EventArgs e)
{
    comboBoxForeignKey.SelectedItem = (comboBoxObject.SelectedItem as MainObject)?.ForeignKeyObject;
}

РЕДАКТИРОВАТЬ:

Ваш дополнительный код делает изображение другим. У вас нет прямой ссылки на внешний ключ к объекту, а только int RefContactCommon. В этом случае вам нужно будет сделать больше работы. Вам нужно будет извлечь объект из второй коллекции и затем присвоить его SelectedItem

private void comboBoxObject_SelectedIndexChanged(object sender, EventArgs e)
{
    CommonModel foreignKeyObject = comboBox2DataSourceCollection.FirstOrDefault(x => x.CommonID == (comboBoxObject.SelectedItem as MainObject)?.RefContactCommon);
    comboBoxForeignKey.SelectedItem = foreignKeyObject;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...