【发布时间】:2015-05-19 12:27:35
【问题描述】:
共有两个下拉菜单
从数据库中获取值,例如:
下拉 1(产品)
- 冰淇淋
- 巧克力
- 冷饮
如果从第一个下拉列表 1 中选择冰淇淋,它将显示
下拉2(品种)
- 香草
- 草莓
- 芒果
如果从第一个下拉列表 1 中选择了 Chocolates,它将显示
下拉2(品种)
- 黑巧克力
- 牛奶巧克力
- 焦糖巧克力
其他项目应清除并仅显示以上内容
使用的代码
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string txtval = DropDownList1.SelectedValue;
string txtval1 = DropDownList1.SelectedItem.Text;
string str = "Provider=Microsoft.ACE.OleDB.12.0; Data Source=C:\\Users\\user\\Desktop\123\\WebSite1\\Checking_Db.mdb";
OleDbConnection db = new OleDbConnection(str);
db.Open();
// string st = "select Emp_Ph_No from emp where Emp_Name = DropDownList1.SelectedValue ;";
string st = "select Emp_Ph_No from emp where Emp_Name = txtval1;";
OleDbCommand dbc = new OleDbCommand(st, db);
OleDbDataReader read = dbc.ExecuteReader();
DropDownList2.DataSource = read;
DropDownList2.DataTextField = "variety";
DropDownList2.DataValueField = ""variety";
DropDownList2.DataBind();
read.Close();
db.Close();
}
【问题讨论】:
-
您确定此代码会导致该错误吗?我在您的 SQL 中没有看到任何实际参数,但我确实看到了一个语法错误,您尝试在字符串中使用 C# 变量。
-
如果我这样使用意味着 string st = "select Emp_Ph_No from emp where Emp_Name = DropDownList1.SelectedValue ;";
-
这仍然是一个语法错误。您不能在这样的字符串中使用变量。 (您也不应该使用 SQL 语句,这将是一个 SQL 注入漏洞。)下面 Soner 的回答显示了如何将值添加到 SQL 语句。
-
通过断点检查 Getting txtval =2 and txtval 1= Ice Cream 但它会产生错误
-
我不知道还能如何描述这一点。您从根本上误解了 C# 和 SQL 的工作原理。老实说,我建议浏览一些关于该主题的介绍性教程。