Комбоксы загружаются только при выборе вторых предметов и ниже - PullRequest
0 голосов
/ 02 ноября 2010

Это действительно странно. Я хочу выбрать штат и загрузить города из этого состояния в другой комбинированный список.

Работает, КРОМЕ при выборе первого элемента в выпадающем списке:

Вот весь мой класс. Оператор if в selectedIndexChanged должен убедиться, что что-то выбрано. Проблема заключается в том, что если я установлю это значение на cmbState.SelectedIndex >= 0, то возникнет исключение, потому что при начальной загрузке comboBox не имеет переменной .State, а не .Value.

Я не знаю, имеет ли это смысл.

private void MainForm_Load(object sender, EventArgs e)
{
    LoadDepartmentsToComboBox();
}

private void LoadCitiesToComboBox(long StateID)
{
    cmbCity.DataSource = null;
    CityRepository cityRepo = new CityRepository();
    cmbCity.DataSource = cityRepo.FindAllCities().Where(c => c.IDState == StateID);
    cmbCity.DisplayMember = "Name";
    cmbCity.ValueMember = "ID";
}

private void LoadDepartmentsToComboBox()
{
    cmbState.DataSource = null;
    StateRepository stateRepo = new StateRepository();
    cmbState.DataSource = stateRepo.FindAllStates();
    cmbState.DisplayMember = "Name";
    cmbState.ValueMember = "ID";
}

private void cmbState_SelectedIndexChanged(object sender, EventArgs e)
{
    if (cmbState.SelectedIndex > 0)
    {
        LoadCitiesToComboBox(Convert.ToInt64(cmbState.SelectedValue));
    }
}

Если я делаю , использую cmbState.SelectedIndex >= 0, тогда я получаю это исключение:

Невозможно привести объект типа DocumentScannerDanyly.State для ввода 'System.IConvertible'. 'System.IConvertible'.

Когда я не использую SelectedIndex >= 0 и использую обычный старый >0, тогда все работает, кроме тех случаев, когда выбран первый элемент, который ничего не делает; понятно, потому что он не принимает во внимание первый элемент.

Большое спасибо за помощь.

1 Ответ

1 голос
/ 02 ноября 2010
  1. Не назначайте элемент Display и элемент Value в каждой загрузке, просто назначьте их, например, в конструкторе.
  2. добавить ToList () к результату, который будет назначен источнику данных,

Сложное связывание данных принимает в качестве источника данных либо IList, либо IListSource.

отметьте это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...