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 或其他来源的属性中填充他们的数据。我在想也许我的问题之一是我不太正确地理解对象,但我希望有人能告诉我如何从所选列表中获取特定值。我想稍后使用其中一个值。

谢谢,

杰森

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 回答