星期二, 2月 26, 2019

[EF] DataGridView 和導覽屬性 - Partial Class

stackoverflow 討論中,有利用 Partial Class 來取出導覽屬性,就動手試看看囉
直接在 DataPropertyName 上設定 CustName 啦

Order Class
namespace DataGridView4PartialClass
{
    using System;
    using System.Collections.Generic;
    
    public partial class Order
    {
        public int OrderID { get; set; }
        public System.DateTime OrderDate { get; set; }
        public int CustID { get; set; }
    
        public virtual Customer Customer { get; set; }
    }
}
Partial Class
namespace DataGridView4PartialClass
{
    public partial class Order
    {
        public string CustName
        {
            get
            {
                if (this.Customer != null)
                {
                    return this.Customer.CustName;
                }
                else
                {
                    return string.Empty;
                }
            }
        }
    }
}
C# Code
using System.Data.Entity;

namespace DataGridView4PartialClass
{
    public partial class Form1 : Form
    {
        EFDbContext context;
        BindingSource bsOrder;

        public Form1()
        {
            InitializeComponent();
            context = new EFDbContext();
            bsOrder = new BindingSource();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            context.Order.Include(c => c.Customer).Load();
            bsOrder.DataSource = context.Order.Local.ToBindingList();

            dgvOrders.AutoGenerateColumns = false;
            dgvOrders.DataSource = bsOrder;
        }
    }
}
執行顯示結果

在該篇文章內看到 DataGridView 要顯示導覽屬性的 6 種方式
  1. 使用 DataGridViewComboBoxColumn
  2. 使用 Partial Class
  3. 使用 LINQ
  4. 使用 DataGridView 的 CellFormatting Event
  5. 覆寫並透過 ToString()
  6. 自訂 TypeDescriptor
想筆記 Partial Class、CellFormatting 和自訂 TypeDescriptor,前面兩者已經完成,自訂 TypeDescriptor,則是因為對 OOP 沒有這麼熟悉,看完一頭霧水,只能含淚跳過,^^''

沒有留言:

張貼留言