2012-01-25 15 views
0

ボタンを押すと、リストボックスにデータが表示されません。 私はデータベースからデータを取得し、それをリストボックスに表示したいので、ユーザーはそこからアイテムを選択できます。 私はWPFおよびSQLサーバー2008 R2を使用して...WPFおよびSQL Server 2008 R2 DB

ます。private voidのbutton1_Click(オブジェクト送信者、RoutedEventArgs e)はまず {

 SqlConnection myConnection = new SqlConnection("user id=userid;" + 
            "password=password;server=localhost;" + 
            "Trusted_Connection=yes;" + 
            "database=db1; " + 
            "connection timeout=30"); 

     DataSet ds = new DataSet(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     try 
     { 
      myConnection.Open(); 

     } 
     catch (Exception ex) 
     { 
      textBlock1.Text = "" + (ex.ToString()); 
     } 

     da.SelectCommand = new SqlCommand("Select * FROM Products", myConnection); 
     da.Fill(ds,"Products"); 
     listBox1.DataContext = ds; 

    } 

答えて

1

、そのおそらくのItemsSourceにバインドする方が簡単ではなく、DataContextのよ

第2に、リストボックスを直接データセットにバインドしようとしていますが、これは可能ではないと思います。私はdataviewプロパティを作成し、ds.Tables [0] .DefaultViewに設定します。

<ListView ItemsSource="{Binding Path=myDataViewProperty}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Column1" DisplayMemberBinding="{Binding Column1}"/> 
      <GridViewColumn Header="Column2" DisplayMemberBinding="{Binding Column2}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

を第三に、あなたはリストボックスに表示したい何のために最も適切なコントロールであることを確認している。その後、あなたのリストボックスのXAMLコードで列を入れて表示しますか?データグリッドはより良い選択肢かもしれません。

1

バインドを定義する必要があります。バインドを定義する必要があります.DataContextを単独でデータに埋め込まないように設定すると、バインドされたデータのソースが宣言されます。

<ListBox ItemsSource="{Binding Tables[0]}"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding ProductName}"/> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

またはあなたは自分のリストボックスに単一の値を表示する場合:

<ListBox ItemsSource="{Binding Tables[0]}" DisplayMemberPath="ProductName"/>