Sql server 当数据来自SQL Server(WPF)时,如何检索选定的ListView值
我是C和WPF的新手,希望这是一个简单的问题 我有一个从SQLServer表检索数据的listviewSql server 当数据来自SQL Server(WPF)时,如何检索选定的ListView值,sql-server,wpf,listview,selected,Sql Server,Wpf,Listview,Selected,我是C和WPF的新手,希望这是一个简单的问题 我有一个从SQLServer表检索数据的listview <ListView Width="450" Margin="10" Grid.Row="1" ItemsSource="{Binding Path=Table}" Name="FIData" SelectionChanged="FIData_SelectionChanged"> <ListView.View> <GridView&g
<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或其他源填充数据。我想我的问题之一可能是我对对象的理解不太正确,但我希望有人能告诉我如何从所选列表中获取特定值。我想稍后使用其中一个值
谢谢
Jason在这里,当您这样做时:
FIData.DataContext=ds.Tables[0].DefaultView
它将实际数据表映射为虚拟属性,虚拟属性可用于像您这样的数据绑定场景
但要回答您关于如何检索数据值的问题,我认为您已经非常接近了,因为您已经为listview设置了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,并查看它包含哪些数据。在这里,当您执行以下操作时:
FIData.DataContext=ds.Tables[0].DefaultView
它将实际数据表映射为虚拟属性,虚拟属性可用于像您这样的数据绑定场景
但要回答您关于如何检索数据值的问题,我认为您已经非常接近了,因为您已经为listview设置了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,并查看它包含哪些数据。谢谢,但是当我这样做时,selectedItem返回的值为null。@杰森:我不知道为什么会为null抱歉-但是如果我遇到解决方案或更多细节,我会更新这个答案。我发现问题出在椅子和显示器之间。我没有意识到我必须按F10来执行断点所在的行,所以它从未执行过。当然是空的。。对不起-谢谢,但当我这样做时,selectedItem返回的值为null。@Jason:我不确定为什么会为null抱歉-但是如果我遇到解决方案或更多细节,我会更新此答案。我发现问题出在椅子和显示器之间。我没有意识到我必须按F10来执行断点所在的行,所以它从未执行过。当然是空的。。对不起-