我创建了一个方法,分别使用从comboBox中选择的“项目名称”获取所有信息。
这是我的代码:
private void comboBox1_KeyPress(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string query = "select project_name from JO.dbo.Proj left join JO.dbo.Comp on Proj.company_id = Comp.company_id where Proj.company_name = '" + comboBox1.SelectedItem + "'";
SqlCommand command = new SqlCommand(query, conn);
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
comboBox2.Items.Clear();
while (reader.Read())
{
comboBox2.Items.Add(reader["project_name"].ToString());
}
reader.Close();
}
conn.Close();
conn.Dispose();
}
}
void getAllInfoProj()
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string query2 = "select contact_person,contact_no,address from JO.dbo.Proj left join JO.dbo.Comp on Proj.company_id = Comp.company_id where project_name = '" + comboBox2.SelectedItem + "'";
SqlCommand command = new SqlCommand(query2, conn);
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
txtAddress.Text = reader["address"].ToString();
txtContactNum.Text = reader["contact_no"].ToString();
txtContactPerson.Text = reader["contact_person"].ToString();
}
reader.Close();
}
conn.Close();
conn.Dispose();
}
当我在上面的方法上插入此方法时,它根本没有任何结果。因为当我从comboBox
中选择“项目名称”时,我正在尝试自动填充这些文本框答案 0 :(得分:1)
您可以在SelectedIndexChanged
comboBox2
事件中调用该方法
private void comboBox2_SelectedIndexChanged(object sender,
System.EventArgs e)
{
getAllInfoProj();
}
注意:最好在sql语句中使用sql参数,而不是内联参数。
并且在你的getAllInfoProj()
中你在循环中覆盖文本框文本属性,你只能在UI的末尾看到最后一个记录值。
答案 1 :(得分:0)
由于您希望在某些选择更改(选择项目)时加载文本框,因此您需要处理SelectedIndexChanged
的事件combobox2
。并在该事件中调用您的方法getAllInfoProj()
。