Значение выпадающего списка базы данных напечатано на этикетках - PullRequest
0 голосов
/ 28 июня 2018

Я использую ASP.net, чтобы сделать выпадающее меню. Выпадающее меню связано с базой данных, все это работает. Если в раскрывающемся списке выбрано значение, необходимо заполнить метки, соответствующие раскрывающемуся значению в базе данных. Надеюсь, я проясню, вот что у меня так далеко:

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        OleDbConnection conn = new OleDbConnection();
        conn.Open();
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";


        OleDbCommand cmd1 = new OleDbCommand("Select (Prijs, Jaartal, ISBN) from JipEnJanneke where Titel = @Titel", conn);
        cmd1.Parameters.AddWithValue("@Titel", DropDownList1.SelectedValue.ToString());
        OleDbDataReader rd = cmd1.ExecuteReader();
        while (rd.Read())
        {
            lbl_Prijs.Text = rd["Prijs"].ToString();
            lbl_Jaar.Text = rd["Jaartal"].ToString();
            lbl_Isbn.Text = rd["ISBN"].ToString();
        }
        conn.Close();

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

Вот мое событие page_load прямо сейчас

        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
        //conn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";

        lblConnectionFeedback.Text = "";
        try
        {
            conn.Open();
            lblConnectionFeedback.Text += "Connection is: " + conn.State.ToString();

            // HIER QUERY
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT * FROM Boeken";

            OleDbDataReader rd = cmd.ExecuteReader();

            DropDownList1.DataSource = rd;
            DropDownList1.DataTextField = "Titel";
            DropDownList1.DataValueField = "Titel";
            DropDownList1.DataBind();
            rd.Close();

            conn.Close();

        }
        catch (Exception exc)
        {
            lblConnectionFeedback.Text = exc.Message;
        }
        finally
        {
            conn.Close();
            lblConnectionFeedback.Text += "<br />Connection is: " + conn.State.ToString();
        }

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

В вашем событии загрузки И в вашем коде в dropdown_selectedindexchanged проверьте IsPostBack страницы. Пример:

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
if (IsPostBack){
        OleDbConnection conn = new OleDbConnection();
        conn.Open();
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";


        OleDbCommand cmd1 = new OleDbCommand("Select (Prijs, Jaartal, ISBN) from JipEnJanneke where Titel = @Titel", conn);
        cmd1.Parameters.AddWithValue("@Titel", DropDownList1.SelectedValue.ToString());
        OleDbDataReader rd = cmd1.ExecuteReader();
        while (rd.Read())
        {
            lbl_Prijs.Text = rd["Prijs"].ToString();
            lbl_Jaar.Text = rd["Jaartal"].ToString();
            lbl_Isbn.Text = rd["ISBN"].ToString();
        }
        conn.Close();
}
}

Нагрузка:

if (!IsPostBack){
   OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
        //conn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";

        lblConnectionFeedback.Text = "";
        try
        {
            conn.Open();
            lblConnectionFeedback.Text += "Connection is: " + conn.State.ToString();

            // HIER QUERY
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT * FROM Boeken";

            OleDbDataReader rd = cmd.ExecuteReader();

            DropDownList1.DataSource = rd;
            DropDownList1.DataTextField = "Titel";
            DropDownList1.DataValueField = "Titel";
            DropDownList1.DataBind();
            rd.Close();

            conn.Close();

        }
        catch (Exception exc)
        {
            lblConnectionFeedback.Text = exc.Message;
        }
        finally
        {
            conn.Close();
            lblConnectionFeedback.Text += "<br />Connection is: " + conn.State.ToString();
        }
}
0 голосов
/ 28 июня 2018

Убедитесь, что для свойства AutoPostBack DropDownList1 установлено значение True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...