Заполните ComboBox из ListBox с помощью LINQ - PullRequest
0 голосов
/ 12 декабря 2018

Я не могу найти ответ на свой вопрос в Интернете ..

У меня есть ListBox, который заполняется таблицей SQL с использованием LINQ (хранимая процедура)

У меня естьComboBox, который также заполняется оператором SQL с использованием LINQ (хранимая процедура). Проблема в том, что хранимой процедуре для ComboBox требуется ввод из ListBox, и я не могу ее правильно привести.

Воткак заполнен мой ListBox:

private void NouvelleReservation2_Load(object sender, EventArgs e)
    {
        ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
        listBoxRestaurant.DataSource = oExamenSgbdEntities.SelectAllRestaurants();
        listBoxRestaurant.DisplayMember = "RESTO";
        listBoxRestaurant.ValueMember = "idRestaurants";
        listBoxRestaurant.SelectedIndex = 0;
    }

А вот как заполнен мой ComboBox:

private void listBoxRestaurant_SelectedIndexChanged(object sender, EventArgs e)
    {
        ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
        comboBoxTables.DataSource =
            oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>()); //Here is where i'm struggling... I need to give the "idRestaurant" from the ListBox as parameter for my stored procedure.
        comboBoxTables.DisplayMember = "TABLECHAISE";
        comboBoxTables.ValueMember = "idTables";
    }

Я попытался преобразовать selectedItem в DataRowView, а затем в целое число, но этоне работалПробовал то, что вы видите в коде сейчас, но не можете заставить его работать.

Может кто-нибудь помочь мне, пожалуйста?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Похоже, вы пытаетесь передать список ресторанов в свой запрос, но вы говорите, что вместо этого вам нужно значение id?Если вам нужно одно значение идентификатора (так как в запросе принимается один ввод), вы должны использовать что-то вроде:

comboBoxTables.DataSource = oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>().First().idRestaurant);

Возможно, вы получаете ошибку приведения, поскольку он не может привести IEnumerable к int.

Вы также можете использовать кастинг SelectedItem в качестве ресторана, а затем получить идентификатор, как сказал Джон Уолл.

0 голосов
/ 12 декабря 2018

Не пытайтесь разыграть выбранный элемент списка.Вместо этого используйте выбранное значение:

listBoxRestaurant.SelectedValue

Затем вы можете загрузить ресторан из базы данных по этому значению идентификатора и передать его в функцию SelectTablesByRestaurant().

0 голосов
/ 12 декабря 2018

Вместо передачи:

listBoxRestaurant.Items.Cast () ...

Вы пробовали?

listBoxRestaurant.SelectedItem

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