簡體   English   中英

使用linq到實體匿名類型的Datagridview

[英]Datagridview with linq to entities anonymous type

我正在努力了解如何從使用linq到實體的linq查詢填充的datagridview中更新SQL數據庫。

我從三個表中提取數據; 項目,任務和具有以下查詢的linkMissionItem:

var itemList = from x in me.LinkMissionItem
    join i in me.items on x.itemID equals i.itemID
    join m in me.Missions on x.missionID equals m.MissionID
    where m.MissionNo == selectedMission
    orderby i.categoryID, i.name
    select new { i.itemID, 
                 i.name, 
                 x.Role, 
                 i.Type.typeName, 
                 i.Category.categoryName, 
                 i.model, 
                 i.serialNo, 
                 i.Origin.originCountry, 
                 i.cost, 
                 x.Packaging };

我了解查詢提供了一個匿名類型,該匿名類型從所有三個表中提取了一些列,並將其綁定到datagridview,如下所示:

dgvMissionItems.DataSource = itemList.ToList();

使datagridview只讀。 順便說一句,我目前以編程方式更新“包裝”字段,沒有問題。

但是擁有datagridview的偉大之處在於可以通過編輯單個單元格來添加或更改其中的數據。 我需要允許用戶從linkMissionItem表中編輯Role字段。 如果我僅使用實體LinkMissionTable填充datagridview(使其可修改),則用戶的信息將不友好且不清楚。

我誤解了或正在以錯誤的方式來解決這個問題,並且迫切需要一些有關如何完成工作的建議。 我還無法在Internet上或有關該主題的書中找到任何東西。

您應該檢索整個實體(以及所需的相關實體),但是禁用DataGridView的AutoGenerateColumns功能。 然后,僅定義要向用戶顯示的列,而不是通過將實體和網格的數據源重新包裝到新對象中來斷開它們之間的鏈接。

暫無
暫無

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

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