【问题标题】:Programmatically create columns in a View以编程方式在视图中创建列
【发布时间】:2012-02-29 18:29:15
【问题描述】:

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

通过单元测试运行

[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 walkthrough,我只需要使用实现 IList 的类填充 DataSource,我使用 Array 完成了该操作。

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

【问题讨论】:

  • SomeName 是一个公共字段。您确定支持字段吗?尝试使用属性。

标签: c# winforms devexpress xtragrid


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2019-10-10
    • 2017-05-01
    相关资源
    最近更新 更多