显示列表的问题<;t>;在数据网格中
本文关键字:数据 数据网 网格 gt 问题 列表 lt 显示 | 更新日期: 2023-09-27 17:59:23
我有一个名为Result
的类,它有4个字段作为id, marks, total, avg
。我创建了List类并存储了结果。
现在我只想在数据网格中显示2列。它们分别是CCD_ 3和CCD_。我成功地显示了id和total,但数据网格显示的是4列,而不是2列。列为id, total, id, total
这是我显示数据网格的代码:
private void Form1_Load(object sender, EventArgs e)
{
List<Result> result = new List<Result>();
PopulateResult();
dgresult.AutoGenerateColumns = false;
dgresult.Items.Clear();
dgresult.ItemsSource = result;
DataGridTextColumn col1 = new DataGridTextColumn();
col1.Header = "Id";
col1.Binding = new Binding("Id");
DataGridTextColumn col2 = new DataGridTextColumn();
col2.Header = "Total";
col2.Binding = new Binding("Total");
dgresult.Columns.Add(col1);
dgresult.Columns.Add(col2);
}
}
class Result
{
int id;
int total;
int marks;
int avg;
public int Id { get { return id; } set { id = value; } }
public int Total { get { return total; } set { total = value; } }
public int Marks { get { return marks; } set { marks = value; } }
public int Avg { get { return avg; } set { avg = value; } }
public Result(int ID, int TOTAL, int MARKS, int AVG)
{
id = ID;
total = TOTAL;
marks = MARKS;
avg = AVG;
}
}
我不明白为什么会这样。
提前谢谢。
我在您的代码中添加了注释,这些注释显示了我的想法:
private void Form1_Load(object sender, EventArgs e)
{
// Make a new list of result class objects, local to the Form1_Load method:
List<Result> result = new List<Result>();
// Call a method that populates a list... wait, what list?
PopulateResult();
dgresult.AutoGenerateColumns = false;
dgresult.Items.Clear();
// Set the datagrid data source to the list created earlier
dgresult.ItemsSource = result;
// ...
我不知道为什么在您只指定并添加了两列之后,数据网格会有一组重复的列。这将有助于了解方法PopulateResult()
。
PopulateResult()
要添加到的列表必须是其他列表,因为在Form1_Load
中创建的列表在作用域中是本地的。
我不确定这是否只是一个小小的疏忽,或者您是否需要了解变量范围。如果你已经知道这一点,请原谅:
- C#变量作用域