JustMeD Ответов: 1

Как заполнить текстовые поля на основе выбора выпадающего списка


Привет Эксперты

У меня возникли проблемы с заполнением текстовых полей в моей форме. Значение текстовых полей определяется тем, что пользователь выбирает в раскрывающемся списке. Когда я нажимаю что-то из выпадающего списка, ничего не появляется, и это не входит в цикл while.

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BLL;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace XcellIT
{


    public partial class WebForm4 : System.Web.UI.Page
    {
        //SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString);
        private string CS = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
        private BusinessLogicLayer bll = null;
        USER user = null;
        CLUB club = null;


        protected void Page_Load(object sender, EventArgs e)
        {

            if (IsPostBack != true)
            {
                
                bll = new BusinessLogicLayer();

                ddlAthleteName.Items.Add(new ListItem("Select Athlete", ""));
                ddlAthleteName.AppendDataBoundItems = true;

                try
                {
                    ddlAthleteName.DataSource = bll.FillAthlete();
                    ddlAthleteName.DataTextField = "Name";
                    ddlAthleteName.DataValueField = "UserID";
                    ddlAthleteName.DataBind();
                }
                catch(Exception ex)
                {
                    throw ex;
                }
                
            }
            
            else
            {
            }            
        }
    
        protected void ddlAthleteName_SelectedIndexChanged(object sender, EventArgs e)
        {         

            string strQuery = "SELECT * FROM USER WHERE UserID = @UserID";
                    
            SqlConnection con = new SqlConnection(CS);
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.AddWithValue("@UserID", ddlAthleteName.SelectedItem.Value);
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strQuery;
            cmd.Connection = con;

            try
            {
                con.Open();
                SqlDataReader sdr = cmd.ExecuteReader();
                while (sdr.Read())
                {
                    txtGender.Text = sdr["Gender"].ToString();
                    txtEmail.Text = sdr["EmailAddress"].ToString();
                    txtPhoneNumber.Text = sdr["PhoneNumber"].ToString();
                    txtCity.Text = sdr["City"].ToString();
                    
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

F-ES Sitecore

Вы указали Autopostback= "true" в своем выпадающем списке?

JustMeD

нет

Karthik_Mahalingam

Возможное решение

F-ES Sitecore

Ну, вот в чем твоя проблема.

JustMeD

Я вставил AutoPostBack, и AutoPostBack работает, но он все еще не входит в цикл while. Я попробовал сделать цикл do-while, и он не сработал так же хорошо.

Karthik_Mahalingam

вы получаете какую-нибудь ошибку ?
попробуйте запустить запрос в SQL IDE и убедитесь, что он возвращает некоторые данные

1 Ответов

Рейтинг:
0

F-ES Sitecore

Для того чтобы событие select срабатывало автоматически при изменении пользователем выпадающего списка необходимо включить функцию AutoPostback

Как использовать dropdownlist с autopostback элемента управления в asp.net с#[^]


JustMeD

Я вставил AutoPostBack, и AutoPostBack работает, но он все еще не входит в цикл while. Я попробовал сделать цикл do-while, и он не сработал так же хорошо.

F-ES Sitecore

Научитесь использовать отладчик для пошагового просмотра кода, чтобы увидеть, что происходит. Вызывается ли событие изменения? Что такое ddlAthleteName.Элемент.Возврат стоимости? Если ваше событие выполняется и sql выполняется, но цикл while не срабатывает, то нет записей, удовлетворяющих запросу.

JustMeD

Я исправил это, код был правильным. По-видимому, слово USER-это специальное слово в SQL Server, и оно просто должно быть похоже на [USER]. Спасибо, что уделили мне время и рассказали о функции Автопостбэка.