如何在C#for WPF中将ComboBox连接到数据库文件

时间:2017-02-03 06:14:24

标签: c# wpf visual-studio combobox binding

我正在学习如何在visual studio中使用C#,现在尝试将comboBox连接到扩展名为.mdb的数据库文件 组合框仍然无法从数据库中获取任何信息。 我想组合框显示任何内容,描述或loadid 我会从那里继续。

这是XAML代码

<Window x:Class="test_chose_pic.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:test_chose_pic"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid Background="OldLace">
<StackPanel Orientation="Horizontal" Width="390" Height="24" Background="Beige" >
    <Label Content="select:" Height=" 22" HorizontalAlignment="Right"/>
        <ComboBox  x:Name="ComboBoxZone" Width="120" Height="22" ItemsSource="{Binding}" Margin="0,1,0,0" VerticalAlignment="Top"/>
        <StackPanel>
            <Button Margin=" 26,0" x:Name="btnZone"  Content="Show"  Width="70" Height="20" Click="btnZone_Click" />
        </StackPanel>
</StackPanel>
</Grid>

和代码:

 public void BindComboBox(ComboBox comboBoxName)
    {
        SqlConnection conn = new SqlConnection(@"Data Source = C:\Users\Mohammed's PC\Desktop\SCEPTER\pacificorpv07_2013.mdb;");
        SqlDataAdapter da = new SqlDataAdapter("Select loadid,description FROM load", conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "laods");
        comboBoxName.ItemsSource = ds.Tables[0].DefaultView;
        comboBoxName.DisplayMemberPath = ds.Tables[0].Columns["loads"].ToString();
        comboBoxName.SelectedValuePath = ds.Tables[0].Columns["loadid"].ToString();
    }


    private void btnZone_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Selected ZoneName=" + ComboBoxZone.Text + " and ZoneId=" + ComboBoxZone.SelectedValue.ToString());
    }

为了更加清晰,数据库文件具有称为加载的表 该表有两列名为(loadid)和(description)

1 个答案:

答案 0 :(得分:0)

wpf组合框的DisplayMemberPathSelectedValuePath属性的值将是用于绑定控件的集合的列名/属性名。在您的情况下,您使用的是DataTable,因此这些值应该是表中列的名称。所以改变以下几行:

 comboBoxName.DisplayMemberPath = ds.Tables[0].Columns["loads"].ToString();
 comboBoxName.SelectedValuePath = ds.Tables[0].Columns["loadid"].ToString();

对此:

 comboBoxName.DisplayMemberPath = "loads";
 comboBoxName.SelectedValuePath = "loadid";