2012-11-01 27 views
2

在實體框架當我添加從數據源拖動網格視圖只顯示計數&是隻讀列,我也嘗試手動分配數據源,但仍然無法正常工作。EF5 Grdiview只計數&只讀

+0

你試過了什麼? – neworld

+0

請提供您已經嘗試並且遇到困難的代碼。你得到的輸出是什麼,你在找什麼? –

回答

4

通過一些研究,我發現了一個解決方案。

順便說一句我先使用代碼。

在父實體中,我將列表中的子屬性更改爲ObservableCollection。 我還將名稱空間System.Collections.ObjectModel添加到我的類中。

老:Public Overridable Property PageElements As List(Of PageElement)

新:Public Overridable Property PageElements As ObservableCollection(Of 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 
3

這對我的作品(EF6):

添加ObservableListSource類項目和變更名稱空間

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()); 
    } 
} 

}

打開yourModel.tt文件後

  • 使用「ObservableListSource」(行296484)查找並替換「ICollection」的兩次出現。
  • 「ObservableListSource」(行50)查找並替換第一個出現的「HashSet」
  • 不要替換稍後在代碼中找到的第二次出現的HashSet。
+1

任何原因爲什麼在EF6中這個問題?我覺得很奇怪。 – Saleh