Программно создавать столбцы в представлении - PullRequest
2 голосов
/ 29 февраля 2012

Это должно быть легко. Я хочу заполнить сетку пользовательским источником данных во время выполнения. По какой-то причине он просто не работает.

Запуск через юнит-тест

[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 мне нужно только заполнить DataSource классом, который реализует IList, что я и сделал с Array.

Как я могу отобразить только свой пользовательский столбец и дать ему данные?

1 Ответ

3 голосов
/ 29 февраля 2012

Элемент управления сетки будет привязывать столбцы только к свойствам. Попробуйте это:

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