2013-11-21 2 views
2

Я пытаюсь создать программу, которая, если пользователь выберет что-то из выпадающего списка, тогда метка будет отображаться в зависимости от того, что выбрано.C# Оператор switch, запрашивающий MYSQL databse

EG:

выбирает собаку с раскрывающимся ярлык будет показывать "Собака £ 20"

выбирает Cat из выпадающего списка метка будет показывать "Кошка £ 15"

Я не делаю это правильно и было на нем часами, любая помощь была бы высоко оценена.

код до сих пор

DataSet ds = new DataSet(); 
MySqlConnection cs = new MySqlConnection(@"SERVER= 000.000.00.000;username=myusername;password=******; Initial Catalog = mydatabase"); 
MySqlDataAdapter da = new MySqlDataAdapter(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
    cs.Open(); 
    MySqlDataReader ddl = cd.ExecuteReader(); 
    DdPetPist.DataSource = ddl; 
    DdPetPist.DataValueField = "Specie"; 
    DdPetPist.DataTextField = "Specie"; 
    DdPetPist.DataBind(); 
    cs.Close(); 
    cs.Dispose(); 
} 

Выбрать индекс Изменить

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    MySqlCommand cd = new MySqlCommand("SELECT CAST(Specie AS varchar) + '#' + CAST(Specie_Price AS varchar) AS Specie FROM pets", cs); 
    cs.Open(); 
    PetPrice.Text = Convert.ToString(cd.ExecuteReader()); 
    cs.Close(); 
} 

Пожалуйста, любая помощь будет большим, я застрял на эту проблему в течение нескольких часов и хотели бы перейти на моя следующая задача.

ответ

2

Я хотел бы сделать что-то вроде этого:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selection = DropDownList1.SelectedValue; 
    string petPrice = string.Empty; 

    MySqlCommand cd = new MySqlCommand(String.Format("SELECT Specie_Price FROM pets WHERE Specie ='{0}'",selection), cs); 
    cs.Open(); 
    petPrice = Convert.ToString(cd.ExecuteScalar()); 
    cs.Close(); 

    petPrice.Text = String.Format("{0} is £{1}", selection, petPrice); 
} 

EDIT: Кроме того, в Page_Load, вам нужно обернуть код, если, как показано ниже (IsPostBack!):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
     cs.Open(); 
     MySqlDataReader ddl = cd.ExecuteReader(); 
     DdPetPist.DataSource = ddl; 
     DdPetPist.DataValueField = "Specie"; 
     DdPetPist.DataTextField = "Specie"; 
     DdPetPist.DataBind(); 
     cs.Close(); 
     cs.Dispose(); 
    } 
} 
+0

спасибо, я попробую – Beep

+0

проблема с 'petPrice.Text = String.Format (" {0} is £ {1} ", selection, petPrice);' но я увижу, смогу ли я исправить его – Beep

+1

Кроме того, не забудьте обернуть код в Page_load с помощью 'if (! IsPostBack) {}'. Else 'DropDownList1.SelectedValue' будет пустым. – afzalulh

2

Попробуйте установить свойство AutoPostBack в true из выпадающего списка. Или поставьте ошибку в этой строке

PetPrice.Text = Convert.ToString(cd.ExecuteReader()); 

и скажите, какое значение имеет «PetPrice.Text».

+0

PetPrice.Text будет ярлыком, на который будет выводиться запрос, я думаю, что есть проблема с моим запросом. – Beep

2

Вам нужно изменить ExecuteReader к ExecuteScalar

PetPrice.Text = Convert.ToString(cd.ExecuteScalar()); 

Кроме того, ваш Page_Load обновляет все на каждой загрузке, в том числе постбэка.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) { 
    MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
    cs.Open(); 
    MySqlDataReader ddl = cd.ExecuteReader(); 
    DdPetPist.DataSource = ddl; 
    DdPetPist.DataValueField = "Specie"; 
    DdPetPist.DataTextField = "Specie"; 
    DdPetPist.DataBind(); 
    cs.Close(); 
    cs.Dispose(); 
    } 
} 
+0

hmm Спасибо за ответ, я думаю, что есть проблема с моим запросом, а также когда я выбираю другой вариант из выпадающего ярлыка, не меняется. – Beep

+1

Похоже, вы также перезагружаете раскрывающийся список при каждой загрузке страницы. Оберните содержимое страницы_Load в блок 'if (! Page.IsPostBack) {}'. –

+0

Спасибо, программы, которые все еще не выполняют то, что я хотел бы сделать, но я продолжаю работать над этим. – Beep

Смежные вопросы