c# Combobox 显示 System.Data.Datarowview 因为点

Posted

技术标签:

【中文标题】c# Combobox 显示 System.Data.Datarowview 因为点【英文标题】:c# Combobox displays System.Data.Datarowview because of point 【发布时间】:2017-10-02 19:31:37 【问题描述】:

这是给出错误的代码

        DataSet Music = new DataSet();
        Music= DBI.musicall();
        comboBox1.DisplayMember= "music1.name";   // with .
        comboBox1.ValueMember="Id";
        comboBox1.DataSource=Music.Tables[0];

这是正在运行的代码。

        DataSet Music = new DataSet();
        Music= DBI.musicall();
        comboBox1.DisplayMember= "music1name";  // no point -- no  . 
        comboBox1.ValueMember="Id";
        comboBox1.DataSource=Music.Tables[0];


  public static DataSet musicall()
    
        SqlConnection connect= new SqlConnection(connectway);

        string sql = "select *from Music";
       SqlCommand command= new SqlCommand();
       command.CommandText=sql;
       command.Connection=connect;

        SqlDataAdapter adaptor = new SqlDataAdapter();
        adaptor.SelectCommand=command;
        DataSet finalDs= new DataSet();
        connect.Open();
        adaptor.Fill(finalDs);
        connect.Close();
        return finalDs;

    

为什么我在列名中使用point(.)时会遇到这个问题。

为什么当我在列名中使用“.”时,组合框会显示该错误?

我可以不使用“.”来解决这个问题,但我不想那样解决这个问题。

【问题讨论】:

musicall(); 的代码在哪里?? 什么是音乐的CREATE TABLE 顺便说一句,你不应该将你的字段命名为 music.name 该字段已经在 music 表中,所以是多余的。 它可能不受 .NET 数据绑定逻辑的支持,因为 DisplayMember 需要在绑定组合框时在数据源中查找的属性名称。并且根据标准规则属性中不能有点 (.)。这会导致无法找到财产及其价值。这就是它显示标准字符串表示的原因。如果您检查组合框的 SelectedValue 属性,您应该得到正确的值,因为“Id”是一个有效的属性名称。 @Australopithecus,您是否可以考虑 (而不是使用 *) 如下声明表的每一列? select music.name AS [MusicName] FROM Music 【参考方案1】:

宁可这样做:

    DataSet Music = new DataSet();
    Music= DBI.musicall();
    comboBox1.DisplayMember= "music1name";  
    comboBox1.ValueMember="Id";
    comboBox1.DataSource=Music.Tables[0];

public static DataSet musicall()

    SqlConnection connect= new SqlConnection(connectway);

    string sql = "select [music1.name] AS music1name from Music";
   SqlCommand command= new SqlCommand();
   command.CommandText=sql;
   command.Connection=connect;

    SqlDataAdapter adaptor = new SqlDataAdapter();
    adaptor.SelectCommand=command;
    DataSet finalDs= new DataSet();
    connect.Open();
    adaptor.Fill(finalDs);
    connect.Close();
    return finalDs;


【讨论】:

以上是关于c# Combobox 显示 System.Data.Datarowview 因为点的主要内容,如果未能解决你的问题,请参考以下文章

C# ComboBox控件上的文本能不能居中显示?

c# WPF listview的一列里面放着combobox 我在后台给combobox加了几个item,现在不显示。

如何在 C# 中获取 dataGridView 中所有 Combobox 列的显示成员?

如何从选定的 WPF ComboBox 项 C# 中显示内容

c#怎么用comboBox绑定treeview控件

C#中combobox如何实现模糊查询,并能自动显示下拉列表