visualizzare i dati in una dropdownlist da sqlserver asp.net l’utilizzo di c#

Ho tre dropdownlist il codice riportato di seguito

  <asp:DropDownList ID="ForumTitleList" runat="server"

                        AutoPostBack="True">
                    </asp:DropDownList>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <asp:DropDownList ID="ForumSubTitleList" runat="server" AutoPostBack="True"
                        >
                    </asp:DropDownList>
                    &nbsp;&nbsp;&nbsp;
                    <asp:DropDownList ID="ForumSubjectTitleList" runat="server" AutoPostBack="True"
                       >
                    </asp:DropDownList>

e il codice dietro è

enter code here 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Net;
using System.Net.Mail;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text.RegularExpressions;

namespace Auzine.Forums
{
    public partial class ForumIT : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)

    {
        ConfigurationFuntion();

        DropForumTitle();
        DropForumSubTitle();
        DropForumSubjectTitle();
    }


protected void DropForumTitle()
{
    if (!Page.IsPostBack)
    {

        string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString;

        string selectSQL = "select DISTINCT ForumTitlesID,ForumTitles from ForumTtitle";
        SqlConnection con = new SqlConnection(connection);
        SqlCommand cmd = new SqlCommand(selectSQL, con);
        SqlDataReader reader;
        try
        {

            ListItem newItem = new ListItem();
            newItem.Text = "Select";
            newItem.Value = "0";
            ForumTitleList.Items.Add(newItem);
            con.Open();
            reader = cmd.ExecuteReader();



            while (reader.Read())
            {
                ListItem newItem1 = new ListItem();
                newItem1.Text = reader["ForumTitles"].ToString();
                newItem1.Value = reader["ForumTitlesID"].ToString();
                ForumTitleList.Items.Add(newItem1);



            }
            reader.Close();
            reader.Dispose();
            con.Close();
            con.Dispose();
            cmd.Dispose();


        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        //////////////////

    }
}
protected void DropForumSubjectTitle()
{
    if (Page.IsPostBack)
    {
       //ForumSubjectTitleList.Items.Clear();
        string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString;
        SqlConnection con = new SqlConnection(connection);

        con.Open();



        SqlCommand com = new SqlCommand("select DISTINCT ForumSubjectTitle from ForumSubject where ForumSubTitlesID='" + ForumSubTitleList.SelectedValue.ToString() + "'", con);
        SqlDataReader reader = com.ExecuteReader();
        //ForumTitleList.Items.Clear();

        while (reader.Read())
        {
            ForumSubjectTitleList.Items.Add(reader[0].ToString());


        }

        reader.Close();
        con.Close();



    }

}

protected void DropForumSubTitle()
{


    if (Page.IsPostBack)
    {
        ForumSubTitleList.Items.Clear();
        string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString;
        string selectSQL = "select DISTINCT ForumTitlesID,ForumSubTitles from ForumSubtitle where ForumTitlesID='" + ForumTitleList.SelectedValue.ToString() + "' ";
         SqlConnection con = new SqlConnection(connection);
        SqlCommand cmd = new SqlCommand(selectSQL, con);
        SqlDataReader reader;
        try
        {

            ListItem newItem = new ListItem();
            newItem.Text = "Select";
            newItem.Value = "0";
            ForumSubTitleList.Items.Add(newItem);
            con.Open();
            reader = cmd.ExecuteReader();



            while (reader.Read())
            {
                ListItem newItem1 = new ListItem();
                newItem1.Text = reader["ForumSubTitles"].ToString();
                newItem1.Value = reader["ForumTitlesID"].ToString();
                ForumSubTitleList.Items.Add(newItem1);



            }
            reader.Close();
            reader.Dispose();
            con.Close();
            con.Dispose();
            cmd.Dispose();


        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        //////////////////

    }
    }
}

DropForumTitle() per dropdown1(ForumTitleList) lista si sta lavorando bene e quindi per dropdown2(ForumSubTitleList) ho voglia di cercare in base al valore selezionato di dropdown1(ForumTitleList) e quando farlo come devo scrivere il codice per dropdown1(ForumTitleList) quindi non è di mostrare qualsiasi cosa, ma quando cambiare il codice if (!Pagina.IsPostBack) se (Pag.IsPostBack), mostra, ma l’indice selezionato va aoutomatically a 0… È proprio display, ma quando si seleziona un’opzione dal dropdown2(ForumSubTitleList) poi si va a indice selezionato 0 bydefault e per questo errore il dropdown3(ForumSubjectTitleList) può ricevere l’elemento selezionato valu e non mostra subjectlist dal database … ognuno di elenco a discesa sono collegati con un ID se a discesa visualizza qualsiasi cosa quindi secondo elenco a discesa = al valore selezionato a discesa 1 e la stessa dropdown3 = selezionati valore di dropdown2

ma ho sempre errore con bothe dropdown2 e dropdown3

In breve:

1-dropdown2 non rimanere al valore selezionato: lasciare supporre nell’Elenco A, b, C, e D. quando clicco su Un posrback e il valore selezionato è di nuovo;

2 – dropdown3 non può accedere al valore selezionato di dropdown2 quindi non visualizza niente…

InformationsquelleAutor Syed Azy | 2013-10-05



3 Replies
  1. 1

    In ogni post indietro si sta facendo due cose con ogni lista a discesa:

    1. Ri-compilare con i dati del
    2. Popolare il prossimo

    Che il primo passo è quello di sbarazzarsi del vostro valore selezionato. Non può conservare il valore selezionato quando si cancella i valori e aggiungerne di nuovi.

    È necessario separare queste azioni. Per cominciare, si supponga di avere DropDownList1 e la sua selezione di auto DropDownList2. Quindi Page_Load dovrebbe essere la compilazione di DropDownList1 e solo quando non è un post-back. Qualcosa di simile a questo:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            PopulateDropDownList1();
    }

    Popolare DropDownList2, potreste rispondere alla SelectedIndexChanged caso di DropDownList1. Qualcosa di simile a questo:

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var value = DropDownList1.SelectedValue;
        PopulateDropDownList2(value);
    }

    Tenere a mente che Page_Load riceve chiamate su ogni di caricamento della pagina, anche post-effettua, e si chiama prima eventi come SelectedIndexChanged. Quindi, se si ri-compilare un elenco padre in Page_Load poi non ci sarà più il valore selezionato in SelectedIndexChanged.

    Con lo scenario di cui sopra, l’ordine degli eventi sarebbe:

    1. Utente carica la pagina.
    2. Page_Load esegue.
    3. Non è un post indietro, così DropDownList1 viene popolata con i valori.
    4. Utente seleziona un valore in DropDownList1 e innesca un post-back.
    5. Page_Load esegue.
    6. È è un post indietro, così Page_Load non fa nulla.
    7. DropDownList1_SelectedIndexChanged esegue.
    8. DropDownList2 viene popolata con i valori.

    A questo punto l’utente può ora vedere che cosa hanno selezionato in DropDownList1 e i nuovi valori in DropDownList2. Estendendo questo per un terzo DropDownList è lo stesso modello. Devi creare una DropDownList2_SelectedIndexChanged che fa la stessa cosa come DropDownList1_SelectedIndexChanged, ma con la successiva cascata elenco.

    • Grazie Sir David, ma ancora ricevo errore l’errore è dropdown2 è di nuovo selezionare il livello di valore e, pertanto, il 3 ° non si può procedere come dovrebbe essere
    • Puoi aggiornare la tua domanda per mostrare il vostro codice corrente che produce questo comportamento? Se la selezione dell’elenco è in corso di ripristino post-allora probabilmente siete ancora di ripopolare l’elenco di post indietro.
    • sir grazie mille a tutti voi di fornire un aiuto immediato….il problema è risolto ora , grazie mille,grazie mille ,grazie mille,grazie mille 🙂
  2. 0

    Esempio di codice da inserire:

    Metodo

    private void Bind()
    {
    
        var dt = YourFunctionReturningDataTable(); 
        //Assuming your table has two columns Id,Name
    
        dropdownlist1.datasource = dt;
        dropdownlist1.DataTextField = "Name";
        dropdownlist1.DataValueField="Id";
        dropdownlist1.DataBind();
        dropdownlist1.Items.Insert(0, new ListItem("---Select---","-1"));
    }
    
    private void Page_Load()
    {
    
    
      if(!IsPostback)
      {
      Bind();   
      }
    }
    • Grazie Sir Amit Ranjan, ma ancora ricevo errore l’errore è dropdown2 è di nuovo selezionare il livello di valore e, pertanto, il 3 ° non si può procedere come dovrebbe essere
    • sir grazie mille a tutti voi di fornire un aiuto immediato….il problema è risolto ora , grazie mille,grazie mille ,grazie mille,grazie mille 🙂
  3. 0

    Penso che sia il modo migliore per mostrare a tutti il nome del genere nella lista a discesa. Ho usato EDMX e query LINQ.

     ASPX:
    ===============
    <asp:DropDownList ID="GenreList" runat="server" SelectMethod="GenreList_GetData" DataTextField="Name" DataValueField="Id">
        </asp:DropDownList>
    
        C#:
        ============
         public IEnumerable<Genre> GenreList_GetData()
            {
                using(PlanetWroxEntities myEntities= new PlanetWroxEntities())
                {
                    return (from genre in myEntities.Genres
                            orderby genre.SortOrder
                            select genre).ToList();
                }
            }

Lascia un commento