#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:
вы должны использовать событие изменения текста в выпадающем списке, чтобы определить, когда пользователь выбирает значение из выпадающего списка, и реализовать свой код для получения подробной информации в этом событии