2

私は C# と WPF を初めて使用するので、これが単純な問題であることを願っています。

SQL Server テーブルからデータを取得するリストビューがあります。

<ListView Width="450" Margin="10" Grid.Row="1" ItemsSource="{Binding Path=Table}" Name="FIData" SelectionChanged="FIData_SelectionChanged">
       <ListView.View>
         <GridView>
           <GridViewColumn Header="FI #" DisplayMemberBinding="{Binding Path=Id}"/>
           <GridViewColumn Header="FI Short Name" DisplayMemberBinding="{Binding Path=ShortName}"/>
           <GridViewColumn Header="FI Long Name" DisplayMemberBinding="{Binding Path=LongName}"/>
           <GridViewColumn Header="Last Load Date" DisplayMemberBinding="{Binding Path=MostRecentEffectiveDate}"/>
         </GridView>
       </ListView.View>
    </ListView>

SqlConnection con = new SqlConnection();
    SqlDataAdapter ad = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand();

    string strSql = "SELECT Id, ShortName, LongName, MostRecentEffectiveDate FROM Institutions";


public void BindData()
    {
        cmd.CommandText = strSql;
        ad.SelectCommand = cmd;
        con.ConnectionString = "Data Source=DEVDB\\ABC; Initial Catalog=Cat1; Integrated Security=True";
        cmd.Connection = con;
        DataSet ds = new DataSet();
        ad.Fill(ds);
        FIData.DataContext = ds.Tables[0].DefaultView;
        con.Close();
    }

private void Button_Click(object sender, RoutedEventArgs e)
    {
        BindData();
    }

ボタンをクリックすると、BindData メソッドが呼び出され、リスト ビューが正常に表示されます。私の問題は、選択したリスト項目からデータ値を取得する方法がわからないことです。

他のすべての例では、ユーザーは C# コードまたは XML またはその他のソースのプロパティからデータを入力しています。おそらく私の問題の 1 つは、オブジェクトを正しく理解していないことだと思いますが、選択したリストから特定の値を取得する方法を誰かに教えてもらいたいと思っていました。これらの値のいずれかを後で使用したいと思います。

ありがとう、

ジェイソン

4

1 に答える 1

0

ここでは、次のことを行います。

FIData.DataContext = ds.Tables[0].DefaultView;

実際の DataTable を仮想プロパティにマップします。これは、あなたのようなデータ バインディング シナリオに使用できます。

FIData_SelectionChangedしかし、データ値を取得する方法についての質問に答えるには、リストビューのイベントがあるため、かなり近いと思います。その場合:

private void FIData_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  var myListView = sender as ListView;
  if(myListView != null)
  {
    var selectedItem = myListView.SelectedItem;

    //selectedItem should have an array, which contains data values for the bound object.
  }
}

selectedItemデバッガーで上記を検査し、含まれているデータを確認する必要があります。

于 2011-01-18T21:24:37.380 に答える