2015-10-24 46 views
0

我想創建一個數據網格,它將顯示來自我創建的類對象的數據。到目前爲止,使用我當前的代碼,它將顯示我編碼的列中單元格的正確數量,但它實際上並不會填充數據。如何顯示數據網格中的列表

對象類:

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類的字段作爲屬性。 例如,如果你想顯示的taskTitleDataGridView的價值,你必須這樣定義公共財產:

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#中的學習,lambda可以用於get樣板。它可以幫助壓縮代碼。 'public long TaskID => tID; public string TaskTitle => taskTitle; public TimeSpan StartTime => startTime; public TimeSpan EndTime => endTime; public TimeSpan HoursSpent => hoursSpent;' – Admiralfeb

-1

嘗試gridTimes方法,然後再設置datasourcefor電網

+1

這應該是一條評論。 –