【发布时间】:2020-05-22 16:36:00
【问题描述】:
我正在创建一个航空公司预订系统,我有 2 个组合框。第一个是出发城市,第二个是到达城市。我希望能够从第二个组合框中消除第一个组合框中的选择,因为我不希望同一个城市能够同时作为出发城市和到达城市提交。我正在从数据库中查询城市名称。
这是我的代码:
public partial class main : Form
{
public main()
{
InitializeComponent();
string connectionString = @"Base Schema Name=cyanair;data source=C:\Users\Client 0819\source\repos\Cyanair\cyanair.db";
//Departure ComboBox
SQLiteConnection conn = new SQLiteConnection(connectionString);
try
{
conn.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "SELECT * FROM CyanairAirports";
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
comboDeparture.DataSource = dt;
comboDeparture.ValueMember = "Descriptions";
comboDeparture.DisplayMember = "Descriptions";
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//Arrival ComboBox
private void comboDeparture_DisplayMemberChanged(object sender, EventArgs e)
{
string connectionString = @"Base Schema Name=cyanair;data source=C:\Users\Client 0819\source\repos\Cyanair\cyanair.db";
SQLiteConnection conn = new SQLiteConnection(connectionString);
**String city = comboDeparture.DisplayMember;**
try
{
conn.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "SELECT * FROM CyanairAirports WHERE Descriptions IS NOT '" + comboDeparture.SelectedValue.ToString() + "'";
richTextBox1.Text = "SELECT * FROM CyanairAirports WHERE Descriptions IS NOT '" + comboDeparture.SelectedValue + "'";
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
comboArrival.DataSource = dt;
comboArrival.ValueMember = "Descriptions";
comboArrival.DisplayMember = "Descriptions";
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
谢谢:)
【问题讨论】:
-
那么,问题是什么?您发布的代码是否有问题?如果是这样,什么不起作用?是否抛出异常?
comboArrival没有填充?comboArrival不过滤? -
使用条件和comboBox1.SelectedIndex = comboBox2.SelectedIndex; then true 不提交申请
-
只需对数据源使用过滤器,而不是每次都运行新查询。并且永远不会将数据连接到一个字符串中进行查询
-
@JoshuaRobinson comboArrival 正在填充,但它不会过滤结果。例如,如果在 comboDeparture 中选择了“London”,我希望 London 在 comboArrival 中不作为选项出现。两个组合框都使用同一个位置表。
标签: c# sql forms sqlite combobox