Winforms 如何使bindingSource支持排序?

Winforms 如何使bindingSource支持排序?,winforms,entity-framework-5,bindingsource,Winforms,Entity Framework 5,Bindingsource,我试图创建一个主细节表单,主记录绑定到一个绑定源,而细节datagridview绑定到第二个绑定源 它工作得很好,只有childBindingSource.SupportSorting属性为false。 masterBindingSource.SupportsSorting为true。有没有一种方法可以让childBindingSource支持排序?因为它基于另一个支持排序的绑定源 masterBindingSource.DataSource = GetBindingSource() //

我试图创建一个主细节表单,主记录绑定到一个绑定源,而细节datagridview绑定到第二个绑定源

它工作得很好,只有
childBindingSource.SupportSorting
属性为false。
masterBindingSource.SupportsSorting
为true。有没有一种方法可以让
childBindingSource
支持排序?因为它基于另一个支持排序的绑定源

masterBindingSource.DataSource = GetBindingSource()   // .SupportsSorting = true
childBindingSource.DataSource = masterBindingSource   // .SupportsSorting = false
childBinding.DataMember = ChildItems

private BindingSource GetBindingSource()
{
   DbSet<ContactEvent> dset = Db.ContactEvents;
   IOrderedQueryable<ContactEvent> qry = dset.Where(p => p.Id > 0).OrderBy(x => x.Id);
   qry.Load();

   BindingList<ContactEvent> bindinglist = dset.Local.ToBindingList();
   var bindingSource = new BindingSource();
   bindingSource.DataSource = bindinglist;
   return bindingSource;
}
masterBindingSource.DataSource=GetBindingSource()/.SupportsSorting=true
childBindingSource.DataSource=masterBindingSource/.SupportsOrting=false
childBinding.DataMember=ChildItems
私有BindingSource GetBindingSource()
{
DbSet dset=Db.ContactEvents;
IOrderedQueryable qry=dset.Where(p=>p.Id>0).OrderBy(x=>x.Id);
qry.Load();
BindingList BindingList=dset.Local.ToBindingList();
var bindingSource=新的bindingSource();
bindingSource.DataSource=bindinglist;
返回绑定源;
}

在一些帮助下,我们使用

我必须更改我的类以使用SortableBindingList而不是BindingList。
我很感兴趣的是,BindingList本身就足以用于主级网格,但不适用于包含详细信息的网格。

这是Windows窗体,对吗?是的-哦,我想标记为这样-现在已经完成了。我知道这是一个只读属性:如果数据源是IBindingList并支持排序,则为true;否则,错误。此外,设置DataMember会将绑定源的内部列表重新发送到不满足这两个条件的列表中。但我不知道该怎么办。也许你很幸运,像汉斯·帕桑这样的天才会碰到你的问题。