我需要将项目添加到SQL
db的组合框中。在我的表单中,我有1个组合框(对于项目)和1个textbox
(对于值)。我需要从DB表中加载项目,并且应该根据组合框的值选择textbox
的值。
例如:
combobox textbox
--------------------------
Items price
sss 100
ddd 140
fff 220
选择组合框值时,应自动选择文本框值。
private void Form4_Load(object sender, EventArgs e)
{
con = new SqlConnection("data source=PC\\SQLEXPRESS;integrated security=true;Initial catalog=MyDB");
BindData1();
}
public void BindData1()
{
con.Open();
string strCmd = "select Items from tblbill";
SqlCommand cmd = new SqlCommand(strCmd, con);
SqlDataAdapter da = new SqlDataAdapter(strCmd, con);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.ExecuteNonQuery();
con.Close();
comboBox1.DisplayMember = "items";
comboBox1.ValueMember = "items";
comboBox1.DataSource = ds.Tables[0];
comboBox1.Enabled = true;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
con.Open();
string sel = comboBox1.SelectedItem.ToString();
SqlCommand cmd = new SqlCommand("select price from tblbill where items=" + comboBox1.SelectedValue, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
p = dr[0] as string;
//department = reader[1] as string;
}
textBox1.Text = p;
con.Close();
}
我的组合框中填充了tblbill
中的项目,但根据textbox
中的选择,无法在combobox
中显示价格值。
请帮帮我
答案 0 :(得分:2)
试试这个
SqlCommand cmd = new SqlCommand("select price from tblbill where items=@price", conn);
command.Parameters.AddWithValue("@price", comboBox1.SelectedValue.ToString());
//no need to use reader use
var value= (int)cmd.ExecuteScalar();//set data type according to your use
textBox1.Text = value.ToString();
使用sqlparameter来避免sql注入并使用execute scalar,因为你只想为所选产品获得一个价格
答案 1 :(得分:1)
如果要显示组合框中的选定项目价格。
试试这个:
SqlCommand cmd = new SqlCommand("select price from tblbill where items=@itemname", con);
cmd.Parameters.AddWithValue("@itemname",ComboBox1.SelectedItem.ToString());
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
textBox1.Text= dr[0].ToString();
}
ComboBox的SelectedText和Text属性之间的区别 n
来自MSDN的SelectedText属性
获取或设置在a的可编辑部分中选择的文本 组合框。
来自MSDN的Text属性
获取或设置与此控件关联的文本。
答案 2 :(得分:1)
以下示例并未完全解决您的问题,但是:
SqlConnection
和SqlCommand
textbox
绑定到数据使用它,您可以想象,使用单个记录加载另一个DataTable
并绑定它是多么容易。或者您可以手动填充文本框。
另一个选项,这很有趣,是加载Dataset
有两个表 - 1个组合查找和另一个实际数据。建立它们之间的关系并绑定控件。然后,每次更改combobox
中的值时,都不必转到数据库。您有时需要刷新数据,但一切都将在客户端发生。
private void Form4_Load(object sender, EventArgs e)
{
con = new SqlConnection("data source=PC\\SQLEXPRESS;integrated security=true;Initial catalog=MyDB");
BindData1();
}
public void BindData1()
{
DataTable dt = null;
using (SqlConnection con = new SqlConnection("data source=PC\\SQLEXPRESS;integrated security=true;Initial catalog=MyDB"))
{
con.Open();
string strCmd = "select Items from tblbill";
using (SqlCommand cmd = new SqlCommand(strCmd, con))
{
SqlDataAdapter da = new SqlDataAdapter(strCmd, con);
dt = new DataTable("TName");
da.Fill(dt);
}
}
comboBox1.DisplayMember = "field1";
comboBox1.ValueMember = "field2";
comboBox1.DataSource = dt;
textBox1.DataBindings.Add(new Binding("Text", dt, "field3"));
}
}