【发布时间】:2015-01-29 14:31:05
【问题描述】:
我正在尝试在 windows 窗体应用程序中从同一个表更改的 combobox1 selectedText 上填充 Combobox2。我正在使用 sql serevr 2008 数据库。我无法在组合框选定的文本上填充组合框 2 已更改。
这是我尝试过的:
private void Purchase_Load(object sender, EventArgs e)
{
fillName();
comboBoxName.SelectedIndex = -1;
}
private void comboBoxName_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxName.SelectedText != "")
{
fillMake();
}
}
private void fillName()
{
SqlConnection con = new SqlConnection(@"Data Source=ashish-pc\;Initial Catalog=HMS;Integrated Security=True");
con.Open();
string str = "Select Item_Name from Item";
SqlCommand cmd = new SqlCommand(str, con);
SqlDataAdapter adp = new SqlDataAdapter(str, con);
DataTable dtItem = new DataTable();
adp.Fill(dtItem);
cmd.ExecuteNonQuery();
comboBoxName.DataSource = dtItem;
comboBoxName.DisplayMember = "Item_Name";
comboBoxName.ValueMember = "Item_Make";
}
private void fillMake()
{
SqlConnection con = new SqlConnection(@"Data Source=ashish-pc\;Initial Catalog=HMS;Integrated Security=True");
con.Open();
string str = "Select Item_Make from Item Where Item_Name='" + comboBoxName.SelectedText + "'";
SqlCommand cmd = new SqlCommand(str, con);
SqlDataAdapter adp = new SqlDataAdapter(str, con);
DataTable dtItem = new DataTable();
adp.Fill(dtItem);
cmd.ExecuteNonQuery();
comboBoxName.DataSource = dtItem;
comboBoxName.DisplayMember = "Item_Make";
comboBoxName.ValueMember = "Item_Name";
comboBoxName.SelectedIndex = -1;
comboBoxName.Text = "Select";
}
Items 的 Sql 服务器表
Item_Code Item_Name Item_Make Item_Price UnitofMeasurement
Cable anchor 45.0000 meter
Cable polycab 30.0000 meter
Button anchor 15.0000 unit
Button havells 20.0000 unit
Switch cona 70.0000 unit
我已经寻找解决方案,但很不幸。 请帮帮我。 提前致谢。
【问题讨论】:
-
旁注:请使用SqlParameters来防止Sql注入。
-
感谢sybren的建议,我会记住的。
-
在 fillName 中,您没有选择 Item_Make。您还应该更详细地描述什么不起作用。
-
老实说只是随便说你会记住参数是不够的。像这样创建通过 sql 是犯罪行为。您必须使用参数或更好的存储过程。
-
ROFL。当然,如果你在你的过程中放了一堆动态 sql,你就达不到目的了。真正的关键是,当它是一个文本框时,编码风格可以并且将会被复制。始终以正确的方式进行操作,可以省去很多麻烦。另外,当您转换为过程时,您可以在 sql 端修复错误,而无需重新部署应用程序。分层您的应用程序让您的生活变得如此轻松。
标签: c# sql-server winforms