【问题标题】:How to bind a list which is a property of an object to DataGridView?如何将作为对象属性的列表绑定到 DataGridView?
【发布时间】:2014-12-26 11:09:10
【问题描述】:

我有两个对象。其中一个具有一个属性,该属性是其他对象的列表。例如,我有一个对象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; }
}

有没有办法做到这一点?

【问题讨论】:

    标签: c# winforms data-binding datagridview


    【解决方案1】:

    设置组合框显示成员:

            public Form1()
            {
                InitializeComponent();
    
                comboBox1.DisplayMember = "name";
                comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
            }
    

    Klasselements 填充组合框:

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

    对组合框实现处理程序以设置数据网格视图的数据源:

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

    【讨论】:

      【解决方案2】:

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

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

      等等。

      希望你觉得这很有用。

      【讨论】:

        猜你喜欢
        • 2012-03-27
        • 2014-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        相关资源
        最近更新 更多