我正在学习如何在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)
答案 0 :(得分:0)
wpf组合框的DisplayMemberPath
和SelectedValuePath
属性的值将是用于绑定控件的集合的列名/属性名。在您的情况下,您使用的是DataTable,因此这些值应该是表中列的名称。所以改变以下几行:
comboBoxName.DisplayMemberPath = ds.Tables[0].Columns["loads"].ToString();
comboBoxName.SelectedValuePath = ds.Tables[0].Columns["loadid"].ToString();
对此:
comboBoxName.DisplayMemberPath = "loads";
comboBoxName.SelectedValuePath = "loadid";