【问题标题】:DataBindings.Add with an IEnumerable<string>DataBindings.Add 与 IEnumerable<string>
【发布时间】:2011-08-01 15:10:13
【问题描述】:

我想向报表中的控件添加新的 dataBinding。

通常我会在绑定中添加IEnumerable&lt;someObject&gt;

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

但现在我想使用IEnumerable&lt;string&gt;

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

在这种情况下,dataMember 是什么? (我使用的是 devExpress 的 XtraReport)

【问题讨论】:

  • 您的数据源是否使用相同的对象类型?它在底层都是一个 IEnumerable,所以你应该可以使用相同的属性名。
  • 你确定这没有双参数过载吗?
  • 不存在双参数重载。

标签: c# data-binding datasource report


【解决方案1】:

如果这根本行不通,我不会感到惊讶;但是,您可以使用简单的投影,例如:

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

那么会员名就是"Value"

【讨论】:

  • 感谢您的帮助,100%正确答案是:DataSource = StringIEnumerable.Select(s => new { Value = s }).ToList();请编辑您的帖子以获得答案。
  • @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,因为我认为它不适用于您的情况。

      【讨论】:

      • 我尝试将 DataMember 设置为 null,但出现错误“值不能为 null”。
      • 出于好奇,请问您在这里尝试使用哪种类型的控件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      相关资源
      最近更新 更多