显示列表的问题<;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;
    }
}

我不明白为什么会这样。

提前谢谢。

显示列表的问题<;t>;在数据网格中

我在您的代码中添加了注释,这些注释显示了我的想法:

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#变量作用域