Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在组合框中显示行_C#_Sql - Fatal编程技术网

C# 在组合框中显示行

C# 在组合框中显示行,c#,sql,C#,Sql,我需要显示我拥有的一些数据库行,并在组合框中显示它们 我看到这段代码正在工作,但它没有显示正确的行,而是显示了System.Data.DataRow 这是我的密码: public Form1() { InitializeComponent(); string setting = ConfigurationManager.AppSettings["setting1"]; string conn = ConfigurationManager.C

我需要显示我拥有的一些数据库行,并在组合框中显示它们

我看到这段代码正在工作,但它没有显示正确的行,而是显示了
System.Data.DataRow

这是我的密码:

public Form1()
    {
        InitializeComponent();
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
        using (SqlConnection sqlConn = new SqlConnection(conn))
        {
            string sqlQuery = @"SELECT CDU_ESTADOS  from  testetiposdestados";
            MessageBox.Show(sqlQuery);
            SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable table = new DataTable();
            da.Fill(table);
            comboBox1.DataSource = new BindingSource(table, null);

        }

    }
下面是组合框显示内容的屏幕截图:

下面是组合框应该显示的内容:


如果您对代码或其他内容有任何疑问,请随时询问

,您需要设置combobox
DisplayMember
属性。 否则,它只显示从数据项的
ToString()
返回的值(在本例中为
System.data.DataRow
):

要放入代码的上下文中,请执行以下操作:

public Form1()
{
    InitializeComponent();
    string setting = ConfigurationManager.AppSettings["setting1"];
    string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
    using (SqlConnection sqlConn = new SqlConnection(conn))
    {
        string sqlQuery = @"SELECT CDU_ESTADOS  from  testetiposdestados";
        MessageBox.Show(sqlQuery);
        SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable table = new DataTable();
        da.Fill(table);
        combobox1.DisplayMember = "CDU_ESTADOS";
        comboBox1.DataSource = new BindingSource(table, null);
    }
}
顺便说一句,
SqlCommand
SqlDataAdapter
,以及
DataTable
都实现了
IDisposable
接口,因此您应该将它们与
using
语句一起使用。 此外,我建议开始对本地参数使用
var
关键字,这将使您的代码更短、更可读:

public Form1()
{
    InitializeComponent();
    var setting = ConfigurationManager.AppSettings["setting1"];
    var conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
    using (var sqlConn = new SqlConnection(conn))
    {
        var sqlQuery = @"SELECT CDU_ESTADOS  from  testetiposdestados";
        MessageBox.Show(sqlQuery);
        using(var cmd = new SqlCommand(sqlQuery, sqlConn))
        {
            using(var da = new SqlDataAdapter(cmd))
            {
                using(var table = new DataTable())
                {
                    da.Fill(table);
                    combobox1.DisplayMember = "CDU_ESTADOS";
                    comboBox1.DataSource = new BindingSource(table, null);
                }
            }
        }
    }
}

您定义了combobox ValueMember和DisplayMember吗?我在DataGrindView中没有这样做,它工作了combobox不是DataGridView。使用数据绑定的组合框时,您需要定义DisplayMember和ValueMember。@ZoharPeled,我该怎么做?
combobox1.DisplayMember=“CDU_ESTADOS”
public Form1()
{
    InitializeComponent();
    var setting = ConfigurationManager.AppSettings["setting1"];
    var conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
    using (var sqlConn = new SqlConnection(conn))
    {
        var sqlQuery = @"SELECT CDU_ESTADOS  from  testetiposdestados";
        MessageBox.Show(sqlQuery);
        using(var cmd = new SqlCommand(sqlQuery, sqlConn))
        {
            using(var da = new SqlDataAdapter(cmd))
            {
                using(var table = new DataTable())
                {
                    da.Fill(table);
                    combobox1.DisplayMember = "CDU_ESTADOS";
                    comboBox1.DataSource = new BindingSource(table, null);
                }
            }
        }
    }
}