从DataRow获取DefaultView DataRowView

8
这是情况:我需要绑定一个WPF的FixedPage到一个DataRow。绑定不支持DataRows;只能支持DataRowViews。我需要以最通用的方式进行操作,因为我对DataRow中的内容一无所知并且没有任何控制权。
我需要获取给定DataRow的DataRowView。我不能使用DefaultView上的Find()方法,因为它需要一个键值,而表格可能没有设置主键。
有没有人对解决这个问题有建议呢?
2个回答

6

这并不是一段性感的代码,但似乎没有自动化的方法来查找行,除了循环表格。

        DataRowView newRowView = null;
        foreach (DataRowView tempRowView in myDataTable.DefaultView)
        {
            if (tempRowView.Row == rowToMatch)
                newRowView = tempRowView;
        }
        if (newRow != null)
            UseNewRowView(newRowView);
        else
            HandleRowNotFound();

嘿,我只用了4-5年。 - user1228

4
row.Table.DefaultView[row.Table.Rows.IndexOf(row)]

这是一个可以的答案。但如果你发现自己处于这种情况,你应该考虑学习更多关于DataViews的知识以及它们的使用方式,然后重构你的代码,使其以视图为中心而不是以表格为中心。


这不是一个好主意,如果默认视图已经被过滤,索引可能不会对齐。 - Joel Barsotti
1
@JoelBarsotti:除非在执行此操作之前删除排序/筛选,然后可以重新添加它们。但是这是一个很好的发现。如果您有更好的答案,请随时提供它(如果它有效),我将很乐意选择它作为更好的答案。 - user1228

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接