正在将对象属性初始化为DataGridView中另一个对象属性的值

本文关键字:属性 一个对象 DataGridView 对象 初始化 | 更新日期: 2023-09-27 18:19:30

我正试图将两个对象(List LedgerEntries和List BuyerSellers)绑定到一个DataGridView。LedgerEntry包含Buyer_Seller的属性,我希望最终用户从DataGridView中的组合框(由BuyerSSellers泛型集合填充)中选择一个Buyer_Seller,并且LedgerEntries字符串BuyerSseller属性设置为Buyer_ Seller字符串Name属性。

目前我只使用一个BindingSource,并且没有定义自己的列;它们是基于被绑定到DGV的对象而自动生成的。我有点迷失的是如何确保一个对象中的属性初始化为另一个对象填充的组合框的值。提前感谢您的帮助。

正在将对象属性初始化为DataGridView中另一个对象属性的值

在这里找到了我想要的东西:http://social.msdn.microsoft.com/Forums/vstudio/en-US/62ddde6c-ed96-4696-a5d4-ef52e32ccbf7/binding-of-datagridviewcomboboxcolumn-when-using-object-binding

public partial class Form1 : Form
{
    List<LedgerEntry> ledgerEntries = new List<LedgerEntry>();
    List<Address> addresses = new List<Address>();
    BindingSource entrySource = new BindingSource();
    BindingSource adSource = new BindingSource();
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        entrySource.DataSource = ledgerEntries;
        adSource.DataSource = addresses;
        DataGridViewComboBoxColumn adr = new DataGridViewComboBoxColumn();
        adr.DataPropertyName = "Address";
        adr.DataSource = adSource;
        adr.DisplayMember = "OrganizationName";
        adr.HeaderText = "Organization";
        adr.ValueMember = "Ref";
        ledger.Columns.Add(adr);
        ledger.DataSource = entrySource;
        addresses.Add(new Address("Test1", "1234", 5678));
        addresses.Add(new Address("Test2", "2345", 9876));
    }
    private void button1_Click(object sender, EventArgs e)
    {
        foreach (LedgerEntry le in ledgerEntries)
            MessageBox.Show(le.Address.OrganizationName + " // " + le.Description);
    }
}
public class LedgerEntry
{
    public string Description { get; set; }
    public Address Address { get; set; }
}
public class Address
{
    public string OrganizationName { get; set; }
    public string StreetAddress { get; set; }
    public int ZipCode { get; set; }
    public Address(string orgname, string addr, int zip)
    {
        OrganizationName = orgname;
        StreetAddress = addr;
        ZipCode = zip;
    }
    public Address Ref
    {
        get { return this; }
        set { Ref = value; }
    }
    public override string ToString()
    {
        return this.OrganizationName;
    }
}