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);
}
}
}
}
}