Если я выбираю значение из выпадающего списка, соответствующее значение должно отображаться в текстовом поле

#c# #.net #asp.net #sql #drop-down-menu

#c# #.net #asp.net #sql #выпадающее меню

Вопрос:

Моя таблица регистрации данных содержит следующие данные:

 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
  

я предоставил 2 выпадающих списка, а именно строку и сдвиг, и одно текстовое поле для хранения даты, если пользователь выбирает дату из календаря, и два текстовых поля для хранения значения plant и operearatorname.

например, если пользователь выбирает строку и сдвиг из выпадающего списка и дату из календаря, соответствующие plantname и operatorname должны быть указаны в текстовом поле, например, если пользователь выбирает line1 из выпадающего списка и shift1 из выпадающего списка, а дата имеет значение 25/05/2011, в двух текстовых полях должны отображаться значения 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();
        }
    }
  

но оно не отображается.

Комментарии:

1. Содержит ли ваш DataTable данные?

2. Не могли бы вы, пожалуйста, попробовать использовать SelectedValue вместо SelectedItem?

3. @abdul: я отправляю данные одним выпадающим списком, и я не проверяю дату там, если вы выберете только строку из выпадающего списка, она появится, но когда я хочу выбрать данные на основе строки, сдвига и даты, она не появится для веб-приложения.

4. Существуют ли в базе данных какие-либо данные, соответствующие предоставленному фильтру?

Ответ №1:

Проблема в вашем SQL Query where Clause , вы неправильно задаете значение.

Оно должно быть ddlline.SelectedItem.Value вместо ddlline.SelectedItem , потому что ddlline.SelectedItem возвращает listitem , но вам нужно SelectedValue , и это тот же случай для выпадающего списка ddlshift

Комментарии:

1. Можете ли вы попробовать свойство Text, так как вам нужно Shiftname в классе. ddlshift. SelectItem.Text

2. должен ли я написать этот код для первого выпадающего списка 1 или выпадающего списка 2.

3. Вы можете написать это для обоих, ddlshift. SelectItem. Текст и ddlline. SelectedItem.Text

Ответ №2:

Попробуйте предложение @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);
  

Ответ №3:

вы должны использовать событие изменения текста в выпадающем списке, чтобы определить, когда пользователь выбирает значение из выпадающего списка, и реализовать свой код для получения подробной информации в этом событии