2012-02-29 97 views
3

這應該很容易。我想在運行時用自定義數據源填充網格。出於某種原因,它根本不起作用。以編程方式在視圖中創建列

經由一個單元測試

[TestMethod] 
public void Runtest() { 
    TestForm form = new TestForm(); 
    TestControl control = new TestControl(); 
    form.Controls.Add(control); 
    control.LoadData(); 
    form.ShowDialog(); 
} 

相關的控制代碼

public void LoadData() { 
    SourceRecord[] original = new SourceRecord[] { 
     new SourceRecord("1"), new SourceRecord("3"), new SourceRecord("9") }; 
    gridControl1.DataSource = original; 
    GridColumn col = gridView1.Columns.AddVisible("SomeColumn"); 
    col.FieldName = "SomeName"; 
    //gridControl1.ForceInitialize(); 
} 

記錄信息

public class SourceRecord { 
    public string SomeName = ""; 
    public SourceRecord(string Name) { 
     this.SomeName = Name; 
    } 
} 

我結束了一些列只是稱爲 「列」,其顯示3運行行讀ClassLibrary1.SourceRecord。然後我的自定義列「Some Name」沒有數據。根據devexpress walkthrough我只需要用一個實現IList的類來填充DataSource,我使用的是Array。

如何顯示我的自定義列並將其提供給數據?

+0

SomeName是一個public _field_。你確定字段支持嗎?嘗試一個屬性。 – 2012-02-29 19:25:09

回答

3

網格控件將僅將列綁定到屬性。試試這個:

public class SourceRecord 
{ 
    public string SomeName { get; set; } 
    public SourceRecord(string Name) 
    { 
     SomeName = Name; 
    } 
} 

public void LoadData() 
{ 
    SourceRecord[] original = new SourceRecord[] { new SourceRecord("1"), new SourceRecord("3"), new SourceRecord("9") }; 
    GridColumn col = gridView1.Columns.AddVisible("SomeColumn"); 
    col.FieldName = "SomeName"; 
    gridControl1.DataSource = original; 
}