如何将作为对象属性的列表绑定到DataGridView?

时间:2014-12-26 11:09:11

标签: c# winforms data-binding datagridview

我有两个对象。其中一个具有属性,该属性是其他对象的列表。例如,我有一个对象Klass,其students属性包含Student个对象的列表。我需要我的DataGridView来显示通过ComboBox选择的所选Klass对象的学生数据。因此,每当我使用ComboBox更改选定的Klass时,数据DataGridView将根据所选的Klass对象显示学生列表。

这样编写的简化代码:

Student上课:

public class Student
{
    public string name { get; set; }
    public string address { get; set; }
}

Klass上课:

public class Klass
{
    public string name { get; set; }
    public BindingList<Student> students { get; set; }
}

有没有这样做?

2 个答案:

答案 0 :(得分:1)

设置组合框显示构件:

        public Form1()
        {
            InitializeComponent();

            comboBox1.DisplayMember = "name";
            comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
        }

使用Klass元素填充组合框:

        private void Form1_Load(object sender, EventArgs e)
        {
            BindingList<Klass> klassList = new BindingList<Klass>(Util.CreateMockupData());
            comboBox1.DataSource = klassList;
        }

为组合框实现处理程序以设置datagridview的数据源:

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selectedKlass = comboBox1.SelectedItem as Klass;
            if (selectedKlass != null)
            {
                dataGridView1.DataSource = selectedKlass.students;
            }
        }

答案 1 :(得分:0)

您可以在后面的代码中执行此操作。 将所选项目文本与用于加载所选班级学生的关键字进行比较,并调用 Load_Grid()方法。

    if(cbexample.Text=="Klass1")
{
        Public Load_Grid()
        {
           //code to access the data from DB
        }
}

等等。

希望你觉得这很有用。