为什么列名称不显示在列表框中?

时间:2016-07-14 09:20:50

标签: c# sql-server

现在,当上一个问题得到解决时,出现了一个新问题。当我运行我的代码时,它给我列名称(显然不是我的列名):

  

System.Data.DataRowView

我使用的代码是:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.Text == "select" || textBox1.Text == "SELECT" || textBox1.Text == "SELECT")
    {
        string cmdstr = @"select * from information_schema.columns where table_name = '" +comboBox1.SelectedItem+ "'"; 
        string conStr = @"Data Source=INPDDBA027\NGEP;Initial Catalog=Dev_Server;Integrated Security=True";
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(cmdstr, conStr);
        sda.Fill(dt);
        listBox2.DataSource = dt;
    }
}

请帮助。

1 个答案:

答案 0 :(得分:1)

如果您将复杂对象作为DataSource,则需要指定显示成员。

listBox2.DisplayMember = "COLUMN_NAME"

如果您未指定DisplayMember,则默认为在每个对象上调用.ToString()。默认值是对象的类型,这就是您获得System.Data.DataRowView

的原因

旁注:

而不是:

if (textBox1.Text == "select" || textBox1.Text == "SELECT" || textBox1.Text == "SELECT")

您可以使用:

if (textBox1.Text.Equals("select", StringComparison.OrdinalIgnoreCase))