Каскадирование трех ComboBox - PullRequest
0 голосов
/ 06 ноября 2018

Моя форма Windows имеет три поля со списком. CmdCountry ссылается на дочернюю таблицу CmdContinent, а CmdCity ссылается на дочернюю таблицу CmdCountry.

Но я получаю сообщение об ошибке типа "неправильный формат", когда я пытаюсь получить ContinentId из cmbContinent_SelectedIndexChanged путем кодирования.

int ContId = Convert.Into32(cmbContinent.SelectedValue.ToString());

Мои первые два комбобокса похожи на следующие:

private void Continent()
{
    var continent = (from u in db.Continent
                     select new { u.ContinentName,  u.ContinentId }
                    ).ToList();
    cmbContinent.DataSource = continent;
    cmbContinent.DisplayMember = "ContinentName";
    cmbContinent.ValueMember = "ContinentId";
}

private void cmbContinent_SelectedIndexChanged(object sender, EventArgs e)
{
    if (cmbContinent.SelectedValue.ToString() != null)
    { 
        int ContId = Convert.Into32(cmbContinent.SelectedValue.ToString()); // Here I get the error
        var country = (from u in db.Country
                       where u.ContinentId == ContId
                       select new { u.CountryId, u.CountryName }).ToList();

        cmbCountry.DataSource = country;
        cmbCountry.DisplayMember = "CountryName";
        cmbCountry.ValueMember = "CountryId";
    }
}

И загрузка первого комбобокса Континент в Конструкторе:

public NewAccount()
{
    InitializeComponent(); 
    Continent();
}

Буду признателен, если кто-нибудь сможет помочь.

1 Ответ

0 голосов
/ 06 ноября 2018

Я использую ComboBox в моем текущем проекте, и я делаю что-то подобное.

int valueMax = Convert.ToInt32(cbxNumberValues.SelectedItem);

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

int contId = Convert.ToInt32(cmbContinent.SelectedItem);

Я бы также предложил использовать «cbx» или «cmb», а не «cmd», как обычно говорят «команда». Но это не очень важно

...