C# 如何从Access数据集/数据库填充组合框
我遇到了一个难题,下一步该怎么做才能从我现有的数据集中填充一个组合框。我的数据库名为PID2db.mdb,表名为CustomerC# 如何从Access数据集/数据库填充组合框,c#,combobox,dataset,C#,Combobox,Dataset,我遇到了一个难题,下一步该怎么做才能从我现有的数据集中填充一个组合框。我的数据库名为PID2db.mdb,表名为Customer string strCon = Properties.Settings.Default.PID2dbConnectionString; OleDbConnection conn = new OleDbConnection(strCon); try { conn.Open();
string strCon = Properties.Settings.Default.PID2dbConnectionString;
OleDbConnection conn = new OleDbConnection(strCon);
try {
conn.Open();
string strSql = "Select forename,surname from customer where [customerID] ='" + txtName.Text + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn));
DataSet ds = new DataSet();
adapter.Fill(ds);
cboName.DataSource = ds.Tables[0];
cboName.DisplayMember = "forename";
cboName.ValueMember = "surname";
}
finally {
conn.Close();
}
}
谢谢你的帮助
编辑:添加新的代码段您需要创建一个新的数据集,用数据填充它,最后设置组合框的、和属性。代码如下:
using System.Data.OleDb;
string strCon = Properties.Settings.Default.PID2dbConnectionString;
OleDbConnection conn = new OleDbConnection(strCon);
try {
conn.Open();
string strSql = "Select forename,surname from customer where customer id ='" + txtName.Text + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
comboBox1.DataSource = ds.Tables[0];
comboBox1.DisplayMember = "forename";
comboBox1.ValueMember = "surname";
}
finally {
conn.Close();
}
您需要创建一个新的数据集,用数据填充它,最后设置组合框的、和属性。代码如下:
using System.Data.OleDb;
string strCon = Properties.Settings.Default.PID2dbConnectionString;
OleDbConnection conn = new OleDbConnection(strCon);
try {
conn.Open();
string strSql = "Select forename,surname from customer where customer id ='" + txtName.Text + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
comboBox1.DataSource = ds.Tables[0];
comboBox1.DisplayMember = "forename";
comboBox1.ValueMember = "surname";
}
finally {
conn.Close();
}
假设您有一个包含以下内容的表单: 名为cboName的组合框 名为txtName的文本框 试试这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
LoadCustomerOnCombo();
}
private void LoadCustomerOnCombo()
{
string strCon = Settings.Default.PID2dbConnectionString;
try
{
using (OleDbConnection conn = new OleDbConnection(strCon))
{
conn.Open();
string strSql = "SELECT forename &\" \" & surname AS FullName, surname FROM customer"; //WHERE [customerID] ='" + txtName.Text + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn));
DataSet ds = new DataSet();
adapter.Fill(ds);
cboName.DataSource = ds.Tables[0];
cboName.DisplayMember = "FullName";
cboName.ValueMember = "surname";
}
}
catch (Exception ex)
{
txtName.Text = ex.Message;
Console.WriteLine(ex.Message);
}
}
}
如果工作正常,请告诉我当前左侧注释的where是如何的,否则有任何错误,您将在文本框内看到。假设您有一个包含以下内容的表单: 名为cboName的组合框 名为txtName的文本框 试试这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
LoadCustomerOnCombo();
}
private void LoadCustomerOnCombo()
{
string strCon = Settings.Default.PID2dbConnectionString;
try
{
using (OleDbConnection conn = new OleDbConnection(strCon))
{
conn.Open();
string strSql = "SELECT forename &\" \" & surname AS FullName, surname FROM customer"; //WHERE [customerID] ='" + txtName.Text + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn));
DataSet ds = new DataSet();
adapter.Fill(ds);
cboName.DataSource = ds.Tables[0];
cboName.DisplayMember = "FullName";
cboName.ValueMember = "surname";
}
}
catch (Exception ex)
{
txtName.Text = ex.Message;
Console.WriteLine(ex.Message);
}
}
}
如果工作正常,请告诉我现在左边的注释是什么,否则有任何错误,你会在文本框内看到。我以前看过,我只是想不通,我对COk很陌生,尝试一下这个例子:。如果您有一些错误/问题,请添加一些代码以供审阅;好的,给我一点时间。我将尝试添加另一个示例。我不明白where条款。。。您的列名是CustomerID吗?你试着用字符串搜索吗?哦,天哪,我是个白痴!组合框现在已满,谢谢您的帮助!我现在觉得自己很蠢:我该如何让组合框同时显示名字和姓氏呢?我之前已经看过了,我只是想不通,我对COk很陌生,试试这个例子:。如果您有一些错误/问题,请添加一些代码以供审阅;好的,给我一点时间。我将尝试添加另一个示例。我不明白where条款。。。您的列名是CustomerID吗?你试着用字符串搜索吗?哦,天哪,我是个白痴!组合框现在已满,谢谢您的帮助!我现在觉得自己很愚蠢:我该如何让combobox同时显示名字和姓氏?它仍然没有将数据设置到combox中,并且没有错误消息出现。你的答案值得一次向上投票,但没有说字符串连接是一种非常糟糕的做法,而不是一次向下投票。Draw.如果您确实有一个名为“customer id”的字段,那么您需要在该名称周围加上方括号[customer id]添加方括号无效:/@Steve,我刚刚从问题中复制了select命令。我决定不更改select命令,它仍然没有将数据设置到combox中,并且没有出现错误消息。您的答案值得一次向上投票,但没有说字符串串联是一种非常糟糕的做法,而不是一次向下投票。Draw.如果您确实有一个名为“customer id”的字段,那么您需要在该名称周围加上方括号[customer id]添加方括号无效:/@Steve,我刚刚从问题中复制了select命令。我决定不改变“选择命令”太棒了!谢谢你,我怎样才能让姓氏和名字都出现在组合框中呢?谢谢!帮了我很多忙!伟大的我很高兴你帮了我。始终尝试添加更多数据和一些代码,以便更容易找到正确的解决方案:DWWorks很棒!谢谢你,我怎样才能让姓氏和名字都出现在组合框中呢?谢谢!帮了我很多忙!伟大的我很高兴你帮了我。始终尝试添加更多数据和一些代码,以便更容易找到正确的解决方案:D