是否可以使用来自 sql 服务器的一行数据填充 c# 列表框
Is it possible to populate a c# list box with a Row of data from sql server
所以,我是 C#、Visual studio 等方面的新手,但是我对 SQL 服务器有一些经验。
我有一个 table,其中包含数据(很明显),我想做的是检索该数据并将其显示在下拉列表中,以便客户可以 select 他们想要的数据。我遇到的问题是,列表只显示一个特定字段的数据。
例如,我有一个名为 table 的车辆详细信息,其中包含“制造商、型号、年龄...等”。然而,当我在下拉框中设置功能时,它只允许我 select 一个特定的列 I.E Make 或 Model。
有什么方法可以从 SQL 服务器检索整列并将其显示为一个列表。
I.E 选项一是 Ford, Focus, 5. 下一个选项是 Ford, Fiesta, 10.
是不是因为这行代码是单选项?
this.comboBox1.DisplayMember = "制作";
当我尝试在 GUI 中编辑它时,它基本上告诉我不行。
如有任何帮助,我们将不胜感激。
想法是,当客户 select 选择并按下提交按钮时,它将通过 sql 服务器触发信息。
干杯
确实只有一个 DisplayMember
,但是那个成员可以是任何你喜欢的成员。例如,如果您要将组合框绑定到对象列表,请为对象提供一个显示您想要的内容的 属性:
public class MyClass
{
public string Make { get; set; }
public string Model { get; set; }
public string Display { get { return $"{Make} - {Model}"; } }
}
然后你可以绑定到 属性:
comboBox1.DisplayMember = "Display";
同样,如果您的结果类似于 DataTable
绑定到 SQL 查询的结果,您的查询也可以 return 计算结果:
SELECT
Make,
Model,
Make + ' - ' + Model AS Display
FROM
--...
无论您要将控件绑定到什么,请为其提供您要查找的计算结果。控件本身非常通用,但您可以对 objects/data 进行特定控制,并且可以在其中包含您喜欢的所有逻辑。
如果想得到显示一行数据的下拉菜单,可以参考下面的代码:
string connStr = "Enter your own connect string";
string sql = "select * from Book";//Enter your own sql statement
private void button1_Click(object sender, EventArgs e)
{
comboBox1.Items.Clear();
SqlConnection conn = new SqlConnection(connStr);
using (conn)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
conn.Open();
SqlDataReader read = cmd.ExecuteReader();
if (read.HasRows)
{
while (read.Read())
{
comboBox1.Items.Add(read["Id"].ToString() + "," + read["Name"].ToString());
//You can refer to change this line of code to: comboBox1.Items.Add(read["Make"].ToString() + ", " + read["Model"].ToString()+", " + read["age"].ToString());
}
}
conn.Close();
}
}
所以,我是 C#、Visual studio 等方面的新手,但是我对 SQL 服务器有一些经验。 我有一个 table,其中包含数据(很明显),我想做的是检索该数据并将其显示在下拉列表中,以便客户可以 select 他们想要的数据。我遇到的问题是,列表只显示一个特定字段的数据。
例如,我有一个名为 table 的车辆详细信息,其中包含“制造商、型号、年龄...等”。然而,当我在下拉框中设置功能时,它只允许我 select 一个特定的列 I.E Make 或 Model。
有什么方法可以从 SQL 服务器检索整列并将其显示为一个列表。 I.E 选项一是 Ford, Focus, 5. 下一个选项是 Ford, Fiesta, 10.
是不是因为这行代码是单选项? this.comboBox1.DisplayMember = "制作"; 当我尝试在 GUI 中编辑它时,它基本上告诉我不行。
如有任何帮助,我们将不胜感激。
想法是,当客户 select 选择并按下提交按钮时,它将通过 sql 服务器触发信息。
干杯
确实只有一个 DisplayMember
,但是那个成员可以是任何你喜欢的成员。例如,如果您要将组合框绑定到对象列表,请为对象提供一个显示您想要的内容的 属性:
public class MyClass
{
public string Make { get; set; }
public string Model { get; set; }
public string Display { get { return $"{Make} - {Model}"; } }
}
然后你可以绑定到 属性:
comboBox1.DisplayMember = "Display";
同样,如果您的结果类似于 DataTable
绑定到 SQL 查询的结果,您的查询也可以 return 计算结果:
SELECT
Make,
Model,
Make + ' - ' + Model AS Display
FROM
--...
无论您要将控件绑定到什么,请为其提供您要查找的计算结果。控件本身非常通用,但您可以对 objects/data 进行特定控制,并且可以在其中包含您喜欢的所有逻辑。
如果想得到显示一行数据的下拉菜单,可以参考下面的代码:
string connStr = "Enter your own connect string";
string sql = "select * from Book";//Enter your own sql statement
private void button1_Click(object sender, EventArgs e)
{
comboBox1.Items.Clear();
SqlConnection conn = new SqlConnection(connStr);
using (conn)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
conn.Open();
SqlDataReader read = cmd.ExecuteReader();
if (read.HasRows)
{
while (read.Read())
{
comboBox1.Items.Add(read["Id"].ToString() + "," + read["Name"].ToString());
//You can refer to change this line of code to: comboBox1.Items.Add(read["Make"].ToString() + ", " + read["Model"].ToString()+", " + read["age"].ToString());
}
}
conn.Close();
}
}