2015-10-24 2 views
0

Я пытаюсь создать datagrid, который будет отображать данные из объекта класса, который я создал. Пока, с моим текущим кодом, он покажет правильное количество ячеек в закодированном столбце, но на самом деле он не заполнит данные.Как отобразить список в datagrid

Объект Класс:

public class RCTask 
{ 
    public long tID = 0; 
    public string taskTitle; 
    public TimeSpan startTime; 
    public TimeSpan endTime; 
    public TimeSpan hoursSpent; 
    public bool sorted = false; 

    public RCTask() 
    { } 

Список находится в другой форме, поэтому я использую свойство, чтобы получить к нему доступ. DataGrid кодирование:

private void bindTimes() 
    { 
     taskTimesSource.DataSource = Program.timesheetListI; 
     gridTimes(); 
    } 

    private void gridTimes() 
    { 
     timesGrid.AutoGenerateColumns = true; 

     DataGridViewCell cell = new DataGridViewTextBoxCell(); 
     DataGridViewTextBoxColumn ID = new DataGridViewTextBoxColumn() 
     { 
      CellTemplate = cell, 
      Name = "idColumn", 
      HeaderText = "ID", 
      DataPropertyName = "taskTitle" 
     }; 

     timesGrid.Columns.Add(ID); 
    } 

ответ

0

Сначала вы должны инкапсулировать поля RCTask класса как свойства. Например, если вы хотите, чтобы показать значение taskTitle в DataGridView, вы должны определить общественную собственность, как это:

public class RCTask 
{ 
    public long tID = 0; 
    public string taskTitle; 
    public TimeSpan startTime; 
    public TimeSpan endTime; 
    public TimeSpan hoursSpent; 
    public bool sorted = false; 

    public string TaskTitle 
    { 
     get 
     { 
      return taskTitle; 
     } 
    } 

    public RCTask() 
    { } 
} 

Во-вторых, вы должны изменить порядок процесса установки данных. Набор DataSource после инициализации структуры таблицы, как это:

private void bindTimes() 
{ 
    // Initialize table structure 
    gridTimes(); 
    // Set data 
    taskTimesSource.DataSource = Program.timesheetListI; 
} 
+0

Спасибо! Я получил данные для заполнения. Я добавил переменные как свойства, и он сработал. Кроме того, чтобы увеличить ваше обучение в новых версиях C#, lambdas можно использовать для получения шаблона. Это может помочь сконфигурировать код. 'public long TaskID => tID; public string TaskTitle => taskTitle; public TimeSpan StartTime => startTime; public TimeSpan EndTime => endTime; public TimeSpan HoursSpent => hoursSpent; ' – Admiralfeb

-1

Try метод gridTimes первым, затем установите datasourcefor сетку с

+1

это должно быть комментарий. –

Смежные вопросы