我有两个对象。其中一个具有属性,该属性是其他对象的列表。例如,我有一个对象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; }
}
有没有这样做?
答案 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
}
}
等等。
希望你觉得这很有用。