C# 以编程方式在视图中创建列

C# 以编程方式在视图中创建列,c#,winforms,devexpress,xtragrid,C#,Winforms,Devexpress,Xtragrid,这应该很容易。我想在运行时使用自定义数据源填充网格。出于某种原因,它根本不起作用 通过单元测试运行 [TestMethod] public void Runtest() { TestForm form = new TestForm(); TestControl control = new TestControl(); form.Controls.Add(control); control.LoadData(); form.ShowDialog(); }

这应该很容易。我想在运行时使用自定义数据源填充网格。出于某种原因,它根本不起作用

通过单元测试运行

[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;
    }
}
最后,我看到了一个名为“column”的列,其中显示了3行,读取
ClassLibrary1.SourceRecord
。然后我的自定义列“Some Name”没有数据。根据devexpress,我只需要用一个实现了
IList
的类来填充数据源,这是我用数组完成的


如何仅显示自定义列并为其提供数据?

网格控件将仅将列绑定到属性。试试这个:

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;
}
SomeName是一个公共字段。您确定支持字段吗?尝试一个属性。