如果我从下拉列表中选择值,则相应的值应显示在文本框中

本文关键字:文本 显示 下拉列表 选择 如果 | 更新日期: 2023-09-27 17:58:14

我的数据记录表有以下数据:

Name       Shiftname       operatorname         date        Plantname       Line    Machine
Ashwini   Shift1(7-3)     Operator 1    2011-05-24      Plant 1    Line1       mc1
Deepika   Shift2(3-11)  Operator 2  2011-05-24      Plant 2    Line3       mc5
Pradeepa      Shift2(11-7)  Operator 3  2011-05-25      Plant 3    Line5       mc10
Deepika   Shift1(7-3)   Operator 1  2011-05-25      Plant 1    Line1       mc1

我提供了两个下拉列表,即line和shift,如果用户从日历中选择日期,则提供一个文本框来存储日期,提供两个文本框用于存储plant和opearatorname的值。

例如,如果用户选择行并从下拉列表中转移,从日历中转移日期,则应在文本框中显示相应的工厂名称和操作员名称如果用户从下拉列表中选择line1,从下拉列表选择shift1,并且日期为2011年5月25日,则两个文本框应显示值为plant1和operator 1

我已经写了以下代码:

protected void ddlline_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("connection string");
        con.Open();
        DataTable dt = new DataTable();
        SqlCommand sqlCmd = new SqlCommand("SELECT distinct plantname,operatorname FROM datalogging1 WHERE Line='" + ddlline.SelectedItem + "'and date='"+txtdate.Text+"'and shiftname='"+ddlshift.SelectedItem+"'", con);
        SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
        sqlDa.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            //Where ColumnName is the Field from the DB that you want to display 
            txtplant.Text = dt.Rows[0]["Plantname"].ToString();
            txtop.Text = dt.Rows[0]["operatorname"].ToString();
        }
    }

但没有显示。

如果我从下拉列表中选择值,则相应的值应显示在文本框中

问题出在SQL Query where Clause中,您设置值的方式不对。

它应该是ddlline.SelectedItem.Value而不是ddlline.SelectedItem,因为ddlline.SelectedItem返回listitem,但您需要SelectedValue,下拉菜单ddlshift 也是如此

试试@Muhammad Akhtar的建议,但我也可以看到你没有使用SQL参数,你的代码容易受到SQL注入攻击。这是很容易避免的,它将使您的嵌入式SQL更加美观。

SELECT distinct plantname, operatorname 
FROM datalogging1 
WHERE Line = @Line AND date = @Date AND shiftname = @ShiftName

然后,在执行此语句之前,添加带值的参数。

sqlCmd.Parameters.AddWithValue("@Line", ddlline.SelectedItem.Value);
// passing the date as text is also a bad idea because it will make your
// date format dependant on culture and language specific settings in both
// the database and application code if you parse the date first and
// pass the value as a DateTime value you eliminate the date format hassle
// that might otherwise occur in the database
sqlCmd.Parameters.AddWithValue("@Date ", txtdate.Text);
sqlCmd.Parameters.AddWithValue("@ShiftName", ddlshift.SelectedItem.Value);

您必须使用dropdownlist text-changed事件来检测用户何时从下拉列表中选择一个值,并实现您的代码以获取该事件中的详细信息