更改DropDownlist

时间:2015-05-19 12:27:36

标签: c# asp.net

完全两次下降

从数据库获取值,如:

下降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();
}

1 个答案:

答案 0 :(得分:3)

该行的问题;

...where Emp_Name = txtval1;

如果txtval1string,您可以将其用作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())
    {
       //
    }
}