0

我正在尝试将一列表的内容放入listbox. 我使用这段代码来做到这一点。

listBox1.DataContext = ds.Tables[0];

我也尝试使用此代码

listBox1.ItemsSource = ds.Tables[0];

两者都没有工作。

知道我该怎么做吗?

    namespace itinventory
    {
       /// <summary>
      /// Interaction logic for MainWindow.xaml
      /// </summary>
     public partial class MainWindow : Window
     {
         SqlConnection con ;
         SqlDataAdapter da ;
         DataSet ds;

        public MainWindow()
        {
            InitializeComponent();
            con = new SqlConnection("Server=myserver\\sqlexpress;" + "Database=ITINVENTORY;User ID=sa;" + "Password=mypassword");
            con.Open();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            SqlDataAdapter da = new SqlDataAdapter("select DISTINCT orgcode from Employees", con);
            DataSet ds = new DataSet();
            da.Fill(ds,"orgcode");
            listBox1.DataContext = ds.Tables[0];
        }
    }
}    
4

1 回答 1

0

这是优化的代码和一些建议。

string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename='D:\TEMPX\Projects X\ODataClient\ODataClient\Data\northwnd.mdf';Integrated Security=True;User Instance=True";
        void button1_Click(object sender, RoutedEventArgs e)
        {
            DataTable dt = new DataTable();
            using (SqlConnection con = new SqlConnection(constring))
            {
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter("select * from Employees", con);

                da.Fill(dt);
                con.Close();
            }

            listBox1.ItemsSource = dt.AsDataView();
        }

我不会告诉你如何编写查询。但是对于您的问题,这里有几点。

如果您使用的是绑定,那么 dataContext 就可以了。DataContext 意味着您正在传递一个可以进一步绑定到其子属性的对象。并且您需要绑定 ListBox 的 ItemsSource 属性。作为

ItemsSource={绑定}。

 <ListBox x:Name="listBox1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FirstName}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

但是,如果您只是将数据传递给列表,您需要做的是将数据分配到 ItemsSource 属性中,这将只显示对象类型全名而不是显示数据。使用上面的模板来显示数据。

另一件事是,当您将 DataTable 对象分配给 itemsssource/DataContext 时,源必须是 Enumrable,因此将其用作 DataView。它继承自 Ilist , IEnumrable。等等

于 2012-09-11T06:37:04.667 回答