Не может связать со свойством или именем столбца на DataSource. Название параметра: dataMember

Вы можете сгенерировать эту последовательность, используя sprintf

sprintf("%03d", 1:100)
#[1] "001" "002" "003" "004" "005" "006" "007" "008" "009" "010" "011" ... "098" "099" "100"
8
задан dav_i 23 August 2012 в 10:36
поделиться

2 ответа

Найденный обходным решением. Сделанный классом

public class StubPropertyType
{
    public StubPropertyType(Type type)
    {
        this.StubPropertyTypeName = type.Name;
    }

    public string StubPropertyTypeName = string.Empty;
}

созданный обязательный источник

this.propertyStubBindingSource.DataSource = typeof(StubPropertyType);

созданный экземпляр класса и связанный текстовое поле с ним.

this.nameTextBox.DataBindings.Add(
    new System.Windows.Forms.Binding(
        "Text", 
        this.propertyStubBindingSource, 
        "StubPropertyTypeName", 
        true));

работы точно как требуется.

3
ответ дан 5 December 2019 в 10:45
поделиться

Действительно, существует специальный режим Типа... этот подход используется в IDE и т.д. для конфигурирования метаданных заранее. Если Вы смотрите на сгенерированную IDE привязку, они делают вещи как:

bindingSource1.DataSource = typeof(MyObject);

высказывание, "когда мы получаем реальные данные, мы ожидаем MyObject isntance"; т.е. когда Вы просите "Имя", оно ищет свойство имени на MyObject - не Название экземпляра Типа. Это позволяет сеткам и т.д. получать свои метаданные, не имея необходимость ожидать реальных данных; но как следствие Вы не можете связать для Ввода "для реального".

Система. Код ComponentModel идентичен между простой привязкой и привязкой списка (плюс-минус менеджер по валюте), таким образом, простая привязка также наследовала это поведение. Аналогичным образом, Вы не можете связать со свойствами класса, который реализует IList/IListSource, так как это интерпретируется специальным способом.

Ваш дополнительный класс кажется разумным подходом.

13
ответ дан 5 December 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: