Поиск в базе данных SQL с помощью ComboBox в WPF - PullRequest
0 голосов
/ 28 января 2019

У меня есть база данных SQL с несколькими столбцами:

StartTime   EndTime   MsgType   Description
DateTim2    DateTim2  2         Some Text
DateTim2    DateTim2  2         Some Text1
DateTim2    DateTim2  1         Some Text2
DateTim2    DateTim2  3         Some Text3

Столбец MsgType может иметь значение 1, 2 или 3. Я создаю окно параметров поиска С фильтром WPF для фильтрациина start/end time, а также хотите отфильтровать с Msgtype.В окне параметров поиска есть кнопка «Применить» для выполнения хранимой процедуры.When MsgType = 0 SP показывает все, возвращает все MsgTypes.

Я использовал классы Linq to SQL, чтобы заставить хранимую процедуру работать:

LinqDataContext dc = new LinqDataContext(Properties.Settings.Default.ConnectionString);

private void ApplyButton_Click(object sender, RoutedEventArgs e)
    {
        spGetHistoric.ItemsSource = dc.spMessages_GetHistoric(1033, BeginDate.SelectedDate, StopDate.SelectedDate, 0 <this is the msgType>);
    }

Когда я вручную установил MsgType в один иззначения он работает нормально, но как мне заставить его работать с combobox?

1 Ответ

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

Есть несколько способов, и во многих случаях вы привязываете ComboBox к источнику данных, а затем по-разному получаете доступ к значению.Тем не менее, основной способ заключается в следующем:

<ComboBox Name="TheComboBox" SelectionChanged="TheComboBox_SelectionChanged">
    <ComboBoxItem Tag="1">One</ComboBoxItem>
    <ComboBoxItem Tag="2">Two</ComboBoxItem>
    <ComboBoxItem Tag="3">Three</ComboBoxItem>
</ComboBox>

А затем:

int msgType = int.Parse((TheComboBox.SelectedItem as ComboBoxItem).Tag as string);

Когда MsgType является перечислением, вы будете анализировать по-разному, и если заполнение ComboBox программно или через данныепривязки, вы бы уже использовали правильный тип вместо разбора строки.

...