WPF 数据网格:- 迭代每一行或记录 (C# 4.0)

发布于 2024-11-16 01:29:32 字数 602 浏览 2 评论 0原文

假设我在VS2010提供的数据网格选择了一行

现在假设我只需要所选行下方的记录 > 那我该怎么办呢?

我认为这可以通过迭代每一行数据网格来完成。但是如何实现呢?

为什么会这样?因为

假设我已将一个集合绑定到数据网格。

现在,我使用数据网格列标题数据网格进行重新排序

然后,数据网格中的记录重新排序,但底层集合中的记录保持无序。

意味着重新排序不会< strong>不影响底层集合。

因此,我无法使用它来获取所选行下方的记录。

注意:此处需要重新排序,

谢谢...

Suppose I have select one row in Data Grid provided by VS2010.

Now suppose I need only records below the selected row then what should I have to do?

i think this could be done through iterating over each row of Data Grid.But how?

Why this? Because

Suppose I have bound one collection to datagrid.

And now I reorder the Data Grid using the header of columns of Data Grid.

Then records in Data Gridare reordered but the records in underling collection remains unordered.

Means re-ordering does not affect under lying collection.

So I can’t use it for getting the records below the selected row.

NOTE: here reordering is necessary

Thanks…

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可可 2024-11-23 01:29:32

您可以获取 CollectionView< /a> 包装原始集合,并使用 CollectionViewSource.GetDefaultView

您的 DataGrid 需要与当前项目同步,然后您获取位置并获取其后的对象,例如:

<DataGrid IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Data}" />
var view = CollectionViewSource.GetDefaultView(Data) as ListCollectionView;
if (view != null)
{
    var i = view.CurrentPosition;
    var nextEmp = view.GetItemAt(i + 1) as Employee;
    if (nextEmp != null)
    {
        nextEmp.Name = "Steve!";
    }
}

You can get the CollectionView which wraps the original collection and in which the ordering happens by using CollectionViewSource.GetDefaultView.

Your DataGrid needs to sync with the current item, then you get the position and get the object following that, e.g.:

<DataGrid IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Data}" />
var view = CollectionViewSource.GetDefaultView(Data) as ListCollectionView;
if (view != null)
{
    var i = view.CurrentPosition;
    var nextEmp = view.GetItemAt(i + 1) as Employee;
    if (nextEmp != null)
    {
        nextEmp.Name = "Steve!";
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文