更改下拉列表时,没有为一个或多个必需的参数给定值
本文关键字:参数 一个 下拉列表 | 更新日期: 2023-09-27 17:49:39
共两个下拉菜单
从数据库中获取值,如:
下拉列表1(Products)
- 巧克力
- <
- 降温饮料/gh>
如果从第一个下拉列表中我选择了Ice cream,它将显示
下拉2(品种)
- 香草 草莓
- 芒果
如果从第一个下拉列表中我选择了巧克力,它将显示
下拉2(品种)
- 黑巧克力
- 牛奶巧克力
- 焦糖巧克力
其他项应清除并仅显示上述
使用<
代码/h2>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();
}
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();
}
那行有问题;
...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
在我的例子,但你不。此方法有时可能会产生意想不到的结果。使用.Add()
重载来指定你的参数OleDbType
和它的大小。
还可以使用using
语句来自动处置连接、命令和阅读器,而不是手动调用.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())
{
//
}
}