簡體   English   中英

從 LINQ 加載的 DataGridView

[英]DataGridView Loading From LINQ

我有一個帶有 DataGridViews 的表單,它的 DataSource 設置為我的數據庫的 DataContext 以自動提取信息並允許對其進行編輯。 但是我需要一種顏色來顯示與 colors 表中的顏色相對應的顏色 ID 中的顏色,我不知道如何通過允許它自動編輯和更新記錄來實現這一點。

private dbCounterTopsDataContext dbContext = new dbCounterTopsDataContext();

private void FrmCurrentInventory_Load(object sender, EventArgs e)
{
    dataGridColors.DataSource = dbContext.Colors;
    dataGridBarTops.DataSource = dbContext.BarTops;
    dataGridKitchenTops.DataSource = dbContext.Kitchens;
    dataGridVanityTops.DataSource = dbContext.Vanities;
}

我也試過這個,它可以顯示,但我不能再直接從數據網格更新

private void FrmCurrentInventory_Load(object sender, EventArgs e)
{
    dataGridColors.DataSource = dbContext.Colors.Select(o => new { ColorId = o.ColorID, Color = o.Color1 });
    dataGridBarTops.DataSource = dbContext.BarTops.Select(o => new { Color = o.Color.Color1, Length = o.Length, Width = o.Width });
    dataGridKitchenTops.DataSource = dbContext.Kitchens.Select(o => new { Color = o.Color.Color1, Length = o.Length }).ToList();
    dataGridVanityTops.DataSource = dbContext.Vanities;
}

SSS 的評論中有一些好的提示,也許最簡單的方法是使用 AutogenerateColumns 生成大部分內容,然后為您的 colors 添加一些組合框列。 可能 go 是這樣的:

dataGridColors.DataSource = 

dataGridBarTops.DataSource = dbContext.BarTops;
dataGridBarTops.AutogenerateColumns = false;
var c = new DataGridViewComboBoxColumn();
c.HeaderText = "Color";
c.DisplayMember = "Color1"; //name of property that says Blue in color entity
c.ValueMember = "ColorID"; //name of property that says 5 in color/entity
c.DataPropertyName = "BarTopColorId"; //name of property that says 5 in BARTOPS table/entity
c.DataSource = dbContext.Colors; //personally I would use a bindingSource here
dataGridBarTops.Columns.Add(cb);

我將把刪除文本框顏色列作為練習留給你——也許先把它留在里面看看組合是如何工作的

Colors datagridview 用於編輯實際的 Colors 定義等。條形頂部表中的組合框用於為單個條形頂部選擇不同的顏色。 如果您編輯 Colors 表,它將更改組合列表中的內容。 如果您選擇一個新的組合值,它將更改 bartop 的顏色 ID(無論該屬性被稱為什么)值

注意不要在 Colors 中編輯掉用於 bartops 的 ID - 不要從 Colors 表中刪除顏色 ID 5,而仍有一個 bartop 使用它


我在那里發表了關於綁定源的評論。 我從來沒有將 DGV 直接綁定到 LINQ 實體列表,我也可能不會(部分是因為它正在下載整個表,這可能很大,部分是因為我的 winforms 數據綁定幾乎完全與強類型數據集),但你發現它工作(也許你需要整個表,沒有過濾)。 但是,如果您開始看到奇怪的效果,例如在 Colors 數據網格視圖中選擇不同的行會導致所有組合框更改值,請通過綁定源綁定組合,以便它們具有專門跟蹤組合的“當前項目”的東西

暫無
暫無

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

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