Проблема с отображением списка <t>в сетке данных? - PullRequest
0 голосов
/ 16 июня 2011

У меня есть класс с именем Result, который имеет 4 поля как id, marks, total, avg.Я создал класс List и сохранил результат.

Теперь я хочу отобразить только 2 столбца в таблице данных.Это id и total.Я успешно отобразил идентификатор и общее количество, но в таблице данных вместо 4 отображаются 4 столбца. Столбцы 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;
    }
}

Не знаюЯ не понимаю, почему так происходит.

Заранее спасибо.

1 Ответ

0 голосов
/ 16 июня 2011

Я добавил комментарии к вашему коду, которые показывают мои мысли:

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, является локальным в области действия.

Я не уверен, является ли это просто небольшим упущением, или вам нужно узнать о переменной области видимости. Простите, если это вам уже известно:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...