База данных для DropDownList и AutoPostBack для метки - PullRequest
2 голосов
/ 25 января 2011

У меня есть такой код

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

                SqlConnection myConnection = new SqlConnection(strConnectionString);
                myConnection.Open();
string musisim = DropDownList1.SelectedItem.Value;

                SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);

                Label1.Text = cmd.ExecuteReader().ToString();

                myConnection.Close();

У меня есть имя клиента как "MUS_K_ISIM" и его номер как "HESAP_NO"

Все, что я хочу, это (автопостбэк это правда)автоматически получая метку "HESAP_NO" с тем, кто имеет этот номер "MUS_K_ISIM" в выпадающем списке.

Как я могу это сделать?

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

Ответы [ 4 ]

4 голосов
/ 25 января 2011

Ваша база данных ничего не знает о вашей ASP-странице или элементах управления на ней ;-), поэтому вам нужно переделать вашу инструкцию SQL - В качестве первой ревизии вы можете изменить ее следующим образом:

SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = '" + DropDownList1.SelectedItem.Value + "'", myConnection);

, чтобы имя, выбранное в раскрывающемся списке, было добавлено в SQL-запрос.

Забегая вперед, лучше всего делать подобные вещи с помощью Параметризованного запроса или Хранимая процедура .

HTH.

1 голос
/ 25 января 2011

Привет, просто используйте параметризованный запрос, подобный этому

Также в запросе имени таблицы YAZ..MARDATA.S_TEKLIF может быть опечатка, это может быть 'YAZ.MARDATA.S_TEKLIF'

Обновлен код

string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

        using (SqlConnection myConnection = new SqlConnection(strConnectionString))
        {
            string query = "select B.HESAP_NO FROM  YAZ.MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = @selectedItem";
            using (SqlCommand cmd = new SqlCommand(query, myConnection))
            {
                cmd.Parameters.AddWithValue("@selectedItem", DropDownList1.SelectedValue.ToString());
                myConnection.Open();
                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    if (dr.HasRows)
                    {
                        Label1.Text = dr["B.HESAP_NO"].ToString();
                    }
                    dr.Close();
                }
            }
            myConnection.Close();
        }
0 голосов
/ 25 января 2011
SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);

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

musisim
0 голосов
/ 25 января 2011

Нет необходимости подключаться к БД с кодом.Вы можете сделать все это с помощью одной строки кода.

Добавьте SqlDataSource и настройте его с помощью необходимой вам команды SQL.

Подключите DropDown к SqlDataSource, настройте столбец, к которому следует подключитьсятекстовое поле и какой столбец следует подключить к полю значения.

В вашей функции DropDownList1_SelectedIndexChanged

Просто сделайте это:

 Label1.Text = DropDownList1.SelectedValue();
...