【发布时间】:2011-08-21 13:37:22
【问题描述】:
我试图从 WPF 中的 DataGrid 中获取选定的行值,但事实证明这非常令人沮丧。不过,在 WinForms 中这很简单。
如何从 wpf 中的 datagrid 控件中获取选定的或一个指定的单行值?
我用了几个网上找的sn-ps,都给了我整行的内容,包括列名!
我试过了:
string value = dataGrid1.SelectedItems[0].ToString();
string value = dataGrid1.SelectedCells[dataGrid1.SelectedItems[0]].ToString();
我查看了 MSDN 下的 wpf 控件部分,但看不到如何在任何地方获取行值。
我不断回复的是:
{ OrderId = d#dfuzJRo , UserId = 56, OrderTotal = , Freight = , DeliveryStatus = , OrderStatus = Pending, TransactionId = , OrderDate = 16/08/2011 9:12:00 PM } - 这不是我想要的。
我想在双击行时获取 OrderId。
我的 XAML 设置如下:
<DataGrid AutoGenerateColumns="True" Name="dataGrid1" DataContext="{Binding}" ItemsSource="{Binding}" HorizontalGridLinesBrush="#4D0090FF" VerticalGridLinesBrush="#A30091FF" AlternatingRowBackground="#200098FF" BorderThickness="0" ClipToBounds="False" MouseDoubleClick="dataGrid1_MouseDoubleClick" Margin="0,25,0,0" VerticalAlignment="Stretch"></DataGrid>
我正在成功获取数据库信息(基于 MSDN 教程),例如:
private void ViewOrders()
{
ObjectQuery<Order> orders = dEntities.Orders;
var query = from order in orders
orderby order.OrderStatus
select new
{
order.OrderId,
order.UserId,
order.OrderTotal,
order.Freight,
order.DeliveryStatus,
order.OrderStatus,
order.TransactionId,
order.OrderDate
};
dataGrid1.ItemsSource = query.ToList();
}
【问题讨论】:
-
SelectedItem到底有什么问题?如果您想要详细的答案,请提供一些详细信息。您要绑定什么以及如何绑定? -
谢谢@Henk,我已经用我的代码和我尝试过的内容等更新了我的问题。
-
你试过
Order order = dataGrid.SelectedItem as Order,然后var orderId = order.OrderId? -
@jase: 选中的项目是一整行。
-
@Henk,嘿嘿,我现在觉得自己很傻吗。