Программное создание столбцов в представлении

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

Запуск через модульный тест

[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. Тогда в моем пользовательском столбце «Некоторое имя» нет данных. Согласно пошаговому руководству devexpress, мне нужно только заполнить DataSource классом, который реализует IList, который Я сделал с массивом.

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


person P.Brian.Mackey    schedule 29.02.2012    source источник
comment
SomeName является общедоступным полем. Вы уверены, что поля поддерживаются? Попробуйте со свойством.   -  person Henk Holterman    schedule 29.02.2012


Ответы (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;
}
person kenrogers    schedule 29.02.2012