完全两次下降
从数据库获取值,如:
下降1(产品)
如果从第一个下拉列表1中选择冰淇淋,它将显示
下拉2(品种)
如果从第一个下拉列表中选择1个巧克力,它将显示
下拉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();
}
答案 0 :(得分:3)
该行的问题;
...where Emp_Name = txtval1;
如果txtval1
是string
,您可以将其用作Emp_Name = 'txtval1'
。这不是有效的语法。在这种情况下,OLEDB提供商认为此txtval1
是一个参数,并且您没有提供任何值。
您可以将此值设置为参数,并添加到您的命令中;
string st = "select Emp_Ph_No from emp where Emp_Name = ?";
OleDbCommand dbc = new OleDbCommand(st, db);
dbc.Parameters.AddWithValue("?", txtval1);
我在我的示例中使用了AddWithValue
但你没有。 This method may generate unexpected results sometimes。使用.Add()
重载来指定参数OleDbType
及其大小。
还可以使用using
statement自动处理您的连接,命令和阅读器,而不是手动处理callind .Close
或.Dispose
方法。
using(var db = new OleDbConnection(str))
using(var dbc = db.CreateCommand)
{
// Set your CommandText.
// Add your parameter value.
using(var read = dbc.ExecuteReader())
{
//
}
}