Frameworks EF5 Grdiview仅计数&;只读
在实体框架中,当我添加“从数据源拖动”时,网格视图仅显示“计数”和“是只读”列,我也尝试手动分配数据源,但仍然不起作用。通过一些研究,我找到了一个解决方案 顺便说一句,我先用代码 在父实体中,我将子属性从list更改为ObservableCollection。 我还向类中添加了名称空间System.Collections.ObjectModel 旧:Frameworks EF5 Grdiview仅计数&;只读,frameworks,entity,datasource,Frameworks,Entity,Datasource,在实体框架中,当我添加“从数据源拖动”时,网格视图仅显示“计数”和“是只读”列,我也尝试手动分配数据源,但仍然不起作用。通过一些研究,我找到了一个解决方案 顺便说一句,我先用代码 在父实体中,我将子属性从list更改为ObservableCollection。 我还向类中添加了名称空间System.Collections.ObjectModel 旧:公共可重写属性PageElements作为(PageElement的)列表 新增:Public Overridable Property PageE
公共可重写属性PageElements作为(PageElement的)列表
新增:Public Overridable Property PageElements As ObservableCollection(属于PageElement)
删除现有数据源(以及表单中的控件)。然后重新创建数据源,并将其拖动到表单中
您可能需要创建一个名为ObservableListSource的类,并使用它来代替ObservableCollection,但到目前为止,它似乎已经解决了最初的问题
这里是我在网上其他地方找到的ObservableListSource的建议定义
Public Class ObservableListSource(Of T As Class)
Inherits ObservableCollection(Of T)
Implements IListSource
Private _bindingList As IBindingList
Private ReadOnly Property ContainsListCollection() As Boolean Implements IListSource.ContainsListCollection
Get
Return False
End Get
End Property
Private Function GetList() As IList Implements IListSource.GetList
Return If(_bindingList, (InlineAssignHelper(_bindingList, Me.ToBindingList())))
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
EndCLass
这对我很有用(EF6):
将observeListSource
类添加到项目中并更改名称空间
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Data.Entity;
namespace WinApp
{
public class ObservableListSource<T> : ObservableCollection<T>, IListSource
where T : class
{
private IBindingList _bindingList;
bool IListSource.ContainsListCollection { get { return false; } }
IList IListSource.GetList()
{
return _bindingList ?? (_bindingList = this.ToBindingList());
}
}
使用系统集合;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
使用系统组件模型;
使用System.Diagnostics.CodeAnalysis;
使用System.Data.Entity;
名称空间WinApp
{
公共类ObservableListSource:ObservableCollection,IListSource
T:在哪里上课
{
私有IBindingList _bindingList;
bool IListSource.ContainsListCollection{get{return false;}
IList IListSource.GetList()
{
返回_bindingList??(_bindingList=this.ToBindingList());
}
}
}
然后打开yourModel.tt
文件
- 查找两个出现的
“ICollection”
,并将其替换为“ObservableListSource”
(行296
和484
)
- 查找第一个出现的
“HashSet”
,并将其替换为“observeListSource”
(第50行)李>
- 不要替换代码后面第二次出现的HashSet
请提供您尝试过但遇到困难的代码。你得到的输出是什么?你在寻找什么?为什么EF6会出现这个问题??我觉得很奇怪。