簡體   English   中英

在DataGridView中將AutoSizeMode設置為AllCells時出現NullReferenceException

[英]NullReferenceException when setting AutoSizeMode to AllCells in DataGridView

我手動將實體框架代碼第一個表綁定到datagridview。 當我將AutoSizeMode設置為AllCells並向表中添加實例時,我在Add期間得到NullReferenceException。

代碼運行如下:

dbContext.Persons.Load();
myDataGridView.DataSource = dbContext.Persons.Local.ToBindingList();

myDataGridView.Columns[ "Description" ].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

Person p = new Person();
p.Name = "Tester Alfred";
p.Description = "Description"; //no more properties, only those two (Id Property is annotated as [Key]

dbContext.Persons.Add( p ); // this throws a NullReferenceException

以下是堆棧跟蹤的相關部分:

System.Data.Entity.Core.Objects.ObjectContext.AddSingleObject(EntitySet entitySet, IEntityWrapper wrappedEntity, String argumentName)
   bei System.Data.Entity.Core.Objects.ObjectContext.AddObject(String entitySetName, Object entity)
   bei System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClassd.<Add>b__c()
   bei System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   bei System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   bei System.Data.Entity.DbSet`1.Add(TEntity entity)

表人員否則是空的。 當我刪除AutoSize - 指令時一切都很好。

Plattform:使用Studio 2013的.Net 4.5.1中的WInForms; 運行Win8 Pro,EF 6.1.3

編輯:刪除了引入第二個gridview的拼寫錯誤

AutoSize所有單元格意味着數據網格視圖需要評估每列的結果。 EF需要提供每行的結果。 您似乎可能綁定到外鍵列。 如果行中的值與外表中的行不匹配,則datagridview將拋出此錯誤。 EF有一個問題,表中的值必須匹配外表中的情況敏感的值...無論SQL是否區分大小寫。 EF正在使用CLR執行實體匹配...這是區分大小寫的

嘗試先添加數據然后再使用它

myDataGridView .Columns[ "Description" ] .AutoSizeMode  = 
DataGridViewAutoSizeColumnMode .AllCells ;

你也可以嘗試一下

 DataGridViewColumn column = dataGridView.Columns[Index];
 column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM