Привязки к данным.Добавить с помощью IEnumerable

#c# #data-binding #datasource #report

#c# #привязка к данным #источник данных #Сообщить

Вопрос:

Я хотел бы добавить новую привязку данных к элементу управления в отчете.

Обычно я добавляю IEnumerable<someObject> к своим привязкам:

 this.MyControl.DataBindings.Add("Text", this.CustomerDataSource, "Name");
  

Но теперь я хотел бы использовать IEnumerable<string>

 this.MyControl.DataBindings.Add("Text", this.MyStringDatasource, "?");
  

Каким будет элемент данных в этом случае? (Я использую XtraReport от DevExpress)

Комментарии:

1. Использует ли ваш источник данных тот же тип объекта? Все это IEnumerable под капотом, поэтому вы должны иметь возможность использовать то же имя свойства.

2. Вы уверены, что для этого нет двухпараметрической перегрузки?

3. Двухпараметрической перегрузки нет.

Ответ №1:

Меня не удивит, если это просто не сработает; однако вы можете использовать тривиальную проекцию, такую как:

  var bindThis = sequence.Select(
     s => new { Value = s });
  

Тогда имя элемента равно "Value"

Комментарии:

1. Спасибо за вашу помощь, 100% правильный ответ: DataSource = StringIEnumerable. Выберите(s => создать { Значение = s }). ToList(); Пожалуйста, отредактируйте свой пост, чтобы получить ответ.

2. @Jean если tolist является важной частью там, было бы лучше выразить исходный вопрос также в терминах списка 🙂

Ответ №2:

Если двухпараметрическая перегрузка недоступна, вы всегда можете использовать LINQ:

 var ds = from str in this.MyStringDatasource
         select new { data = str };

this.MyControl.DataBindings.Add("Text", ds, "data");
  

Ответ №3:

у меня сработал null…

 BindingList<string> folderCollection = new BindingList<string>();

bindingSource1.DataSource = folderCollection;

textBox1.DataBindings.Add("Text", bindingSource1, null);
  

Ответ №4:

Если вы собираетесь привязать элемент управления к Ienumerable, я не верю, что свойство DataMember вообще требуется. Если вы должны установить его, попробуйте установить для него значение null, поскольку я не верю, что это применимо в вашей ситуации.

Комментарии:

1. Я пытался присвоить элементу данных значение null, но у меня возникла ошибка «Значение не может быть нулевым».

2. Из любопытства, с каким типом элемента управления вы пытаетесь здесь работать, если я могу спросить?