获取选定的行值 [英] Getting Selected Row Value

查看:68
本文介绍了获取选定的行值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从WPF中的DataGrid获取选定的行值,事实证明这非常令人沮丧。

I am trying to get the selected row value from a DataGrid in WPF, and it's proving to be very frustrating. It's simple in WinForms, though.

如何从wpf的datagrid控件中获取选定的单行值?

How can I get the selected or a specified single row value from a datagrid control in wpf?

我用了一些我在网上找到的代码片段,它们都给了我整行的内容,包括列名!

I have used several snippets i've found online, and all of them give me the contents of the whole row, including the column names!

我尝试过:

string value = dataGrid1.SelectedItems[0].ToString();

string value = dataGrid1.SelectedCells[dataGrid1.SelectedItems[0]].ToString();

我在wpf控件部分下查看了MSDN,但看不到如何获得行值。

I've looked on MSDN under the wpf controls section but can't see how I can get a row value anywhere.

我一直回想的是:
{OrderId = d#dfuzJRo,UserId = 56,OrderTotal =,货运=,DeliveryStatus =,OrderStatus =待定,TransactionId =,OrderDate = 16/08/2011 9:12:00 PM} -这不是我要的。

All I keep getting back is: { OrderId = d#dfuzJRo , UserId = 56, OrderTotal = , Freight = , DeliveryStatus = , OrderStatus = Pending, TransactionId = , OrderDate = 16/08/2011 9:12:00 PM } - which isn't what I'm after.

当我双击行时,我想获得OrderId。

I would like to get the OrderId when I double-click on a Row.

我的XAML设置如下:

My XAML is setup like:

<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教程),例如:

And I am getting DB info successfully (based off of MSDN tutorial) like:

    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 SelectedItems [0] 会给您该行。但是您的行是匿名类型,这使得获取 OrderID 有点困难。

OK, the simple SelectedItem or SelectedItems[0] will give you the row. But your row is an anonymous type, that makes getting the OrderID a little difficult.

简单的方法是只需选择订单项目并显示该项目即可。在表格中设置列定义以选择要显示的属性。

The simple approach is to simply select the order item and display that. Set up column definitions in the grid to select which properties to show.

另一种方法是定义类DisplayOrder ,然后更改Linq查询:

The alternative is to define a class DisplayOrder, and then change the Linq query:

   select new DisplayOrder
   {
       order.OrderId,
       ...
   };

在两种情况下,您都可以轻松访问 SelectedItem.OrderID 从网格。

In both cases, you can simply access SelectedItem.OrderID from the grid.

  var row = (DisplayOrder) datagrid1.SelectedItem;  // or (Order)
  int Id = row.OrderID;

这篇关于获取选定的行值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆