我在WPF表单上有一个数据源,它具有表格详细视图的形状。当我搜索特定的行时,我希望它在绑定的文本框中进行更新,但它们仅显示为空白。

        System.Windows.Data.CollectionViewSource employeesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("employeesViewSource")));
        Yello.YelloDataSet yelloDataSet = ((Yello.YelloDataSet)(this.FindResource("yelloDataSet")));
        var adapter = new YelloDataSetTableAdapters.EmployeesTableAdapter();

        var row = yelloDataSet.Employees.Select("ID='11'");
        employeesViewSource.View.MoveCurrentTo(row);


例如,如果我这样做:

        System.Windows.Data.CollectionViewSource employeesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("employeesViewSource")));
        employeesViewSource.View.MoveCurrentToNext();


它可以完美工作并使用绑定进行更新。我是使用错误的功能还是缺少某些东西?

最佳答案

我认为正在发生的事情是您正在从yelloDataSet中选择一行,然后尝试移至employeesViewSource中的该行,但是问题是这些行并不相同,尽管数据可能是相同的。要移至CollectionViewSource中的一行,必须在集合中进行搜索。因此,您将执行以下操作:

var row = employeesViewSource.View.OfType<DataSet>().Select("ID='11'");
employeesViewSource.View.MoveCurrentTo(row);




编辑

好吧,我没有实际尝试代码就回答了,我错了。尝试下一个代码,我认为它应该对您有用:

var row = employeesViewSource.View.OfType<DataRowView>()
          .Where(x => x.Row.Field<string>("ID") == "11")
          .FirstOrDefault();
employeesViewSource.View.MoveCurrentTo(row);


但这取决于CollectionViewSource是什么类型。我已经尝试过使用DataTable了。例如,如果它是一个DataSet,它可能会更改。如果这不起作用,请告诉我来源是什么类型...

10-07 19:47
查看更多