代码之家  ›  专栏  ›  技术社区  ›  odiseh

.Net:如何将一个包含其数据源的多个字段的组合框作为Displaymember?

  •  1
  • odiseh  · 技术社区  · 16 年前

    如何使一个数据源中有多个字段的组合框作为其显示成员而不向其数据源中添加其他列?


    1-黑色
    2-白色
    3-红色

    我不想向其数据源添加其他列。

    非常感谢。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Daniel Brückner    16 年前

    不支持绑定到多个属性(在WinForms中)。你必须延长你的工作时间 DataTable 使用计算列并绑定到此新列。

    dataTable.Columns.Add("IdAndName", typeof(String), "ID + Name");
    
    comboBox.DataSource = dataTable;
    comboBox.DisplayMember = "IdAndName";
    

    MSDN 有关计算列的有效表达式的参考。也许你必须使用 Convert .

    dataTable.Columns.Add("IdAndName", typeof(String), "Convert(ID, 'System.String') + Name");
    
        2
  •  0
  •   Hans Olsson    16 年前

    使用select语句获取数据,而不仅仅是从表中获取所有内容并编写如下内容:

    SELECT ID, STR(ID) + ' - ' + Name DisplayName FROM table1
    

    然后将ID设置为数据成员,将DisplayName设置为显示成员。

    未经测试,但感觉应该有效。

        3
  •  0
  •   Ta01    16 年前


    1) 修改您的数据调用以包括组合列,即,您不会“添加”列本身,而是按照
    2) 切换到列表视图
    3) 将数据调用的结果添加到包含要显示的字段(ID、DisplayName)的集合类中,并添加一个“IDDisplayNameCombined”属性,该属性组合这些字段并将此集合绑定到combobox,并将新的组合属性用作displaymember

        4
  •  0
  •   sebagomez    14 年前

    我刚刚找到了一个很酷的解决办法,我想我应该把它放在这里。
    如果你不设置 DisplayMemeber 组合框将调用源对象的ToString方法。因此,您需要做的就是重写 ToString

    public override string ToString()
    {
        return string.Format("{0} - {1}", ID, Name);
    }
    

    希望有帮助!

    推荐文章