在WPF中使用ComboBox搜索SQL数据库

时间:2019-01-28 15:27:32

标签: c# sql-server wpf combobox code-behind

我有一个包含几列的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显示所有返回所有MsgType。

我已经使用Linq到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设置为值之一时,它可以正常工作,但是如何使它与组合框一起使用?

1 个答案:

答案 0 :(得分:0)

有多种方法,在许多情况下,您将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,则您将已经使用了正确的类型而不是字符串解析。