我有一个名为Result
的班级,其中有4个字段为id, marks, total, avg
。我创建了List类并存储了结果。
现在我想在datagrid中只显示2列。它们是id
和total
。我成功显示了id和total,但datagrid显示的是4列而不是2列。列为id, total, id, total
以下是我显示datagrid的代码:
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;
}
}
我不明白为什么会这样。
提前致谢。
答案 0 :(得分:0)
我在您的代码中添加了一些注释,显示了我的想法:
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;
// ...
在您指定并仅添加两列后,我不确定为什么datagrid具有重复的列集。这将有助于查看方法PopulateResult()
。
PopulateResult()
添加到的列表必须是其他列表,因为在Form1_Load
中创建的列表在本地范围内。
我不确定这是否只是一点疏忽,或者您是否需要了解变量范围。如果您已经知道,请原谅我: