«Невозможно привести объект типа« System.String »к типу« System.Windows.Controls.ComboBoxItem ». - PullRequest
0 голосов
/ 14 января 2019

Что у меня есть до сих пор:

  private void Grid_Loaded(object sender, RoutedEventArgs e)
    {
        SqlConnection con1 = new SqlConnection(PublicVar.ConnectionString);
        con1.Open();
        #endregion


        SqlCommand  ss = new SqlCommand("Select MorabiName From MorabiTable", con1);
        SqlDataReader s = ss.ExecuteReader();




        while (s.Read())

        {
            MorabiComboBox.Items.Add(s[0]).ToString();
        }
    }

И что у меня есть для поиска значения ComboBoxItem

  if (this.MorabiComboBox == null)
            return;

        var combo = (ComboBox)sender;
        var selectedValue = (ComboBoxItem)combo.SelectedValue;
        SQLToRun SQLtoRun = new SQLToRun();
        MorabiID = await SQLtoRun.SQLToString(PublicVar.ConnectionString, "Select (MorabiID) from MorabiTable where MorabiName = ") + selectedValue;

но когда я собираю программу, она показывает ошибку на линии var selectedValue = (comboBoxItem)combo.selectedValue и скажи

$ exception {"Невозможно привести объект типа 'System.String' к типу 'System.Windows.Controls.ComboBoxItem'."} System.InvalidCastException

Что мне еще делать?

Ответы [ 3 ]

0 голосов
/ 14 января 2019
 MorabiComboBox.Items.Add(s[0].ToString());

Используйте это, и на этот раз это сработает.

0 голосов
/ 14 января 2019

Если вы хотите ComboBoxItem, создайте его в обработчике событий Grid_Loaded:

MorabiComboBox.Items.Add(new ComboBoxItem { Content = s[0].ToString() });

Затем можно преобразовать свойство SelectedItem в ComboBoxItem:

var selectedValue = combo.SelectedItem as ComboBoxItem:

Если вы добавляете строку в коллекцию Items, вы должны привести свойство SelectedItem к string:

var selectedValue = combo.SelectedItem as string;

Типы должны совпадать.

0 голосов
/ 14 января 2019

Во-первых, этот ToString оператор полностью избыточен

MorabiComboBox.Items.Add(s[0]).ToString();

Во-вторых combo.SelectedValue это строка, посмотрите на строку выше. Приведение его к ComboBoxItem не имеет никакого смысла. Посмотрите на имя SelectedValue, оно говорит вам, что это такое.

Следующее будет иметь больше смысла

var selectedValue = (string)combo.SelectedValue

Наконец,

Попробуйте использовать Parameterized Queries, а не объединять строки для выполнения запросов SQL

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