2012-12-31 14 views
7

Ciao a tutti, ho un problema con l'elenco a discesa. Sto usando un elenco a discesa con origine dati. Come posso ottenere quel valore che ho selezionato?DropdownList DataSource

// I need a if statement here because my programme doesn't know which value of dropdown list selected and I don't know how to use this with datasource. 

if(//if I select quiz 1 from dropdown list ,quiz 1 should list questions.) 

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString); 

string chooce = "Select Quiz from tblQuiz where Quiz=1 "; 
SqlCommand userExist = new SqlCommand(chooce, con); 
con.Open(); 
int temp = Convert.ToInt32(userExist.ExecuteScalar().ToString()); 

if (temp == 1) 
{ 
    if (rbList.Items[0].Selected == true) 
    { 
     string cmdStr = "Select Question from tblQuiz where ID=1"; 
     SqlCommand quest = new SqlCommand(cmdStr, con); 
     lblque.Text = quest.ExecuteScalar().ToString(); 
     con.Close(); 
    } 
+1

Il codice che avete elencato in realtà non corrisponde alla domanda che hai chiesto. È necessario conoscere il nome/id dell'elenco a discesa, il tipo di origine dati utilizzato e il modo in cui è stata associata l'origine dati all'elenco a discesa per poter rispondere in modo efficace. – MadHenchbot

risposta

25

È possibile associare DropDownList in diversi modi utilizzando List, Dictionary, Enum, DataSet DataTable.
Principale, è necessario considerare tre aspetti durante il binding dell'origine dati di un menu a discesa.

  1. DataSource - Nome del set di dati o DataTable o la vostra origine dati
  2. DataValueField - Questi campo sarà nascosto
  3. DataTextField - Questi campo verrà visualizzato sul dropdwon.

è possibile utilizzare seguente codice per associare un DropDownList a un'origine dati come datatable:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString); 

    SqlCommand cmd = new SqlCommand("Select * from tblQuiz", con); 

    SqlDataAdapter da = new SqlDataAdapter(cmd); 

    DataTable dt=new DataTable(); 
    da.Fill(dt); 

    DropDownList1.DataTextField = "QUIZ_Name"; 
    DropDownList1.DataValueField = "QUIZ_ID" 

    DropDownList1.DataSource = dt; 
    DropDownList1.DataBind(); 

se si desidera elaborare sulla selezione di dropdownlist, allora devi cambiare AutoPostBack="true" è possibile utilizzare SelectedIndexChanged evento scrivere il tuo codice.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string strQUIZ_ID=DropDownList1.SelectedValue; 
    string strQUIZ_Name=DropDownList1.SelectedItem.Text; 
    // Your code.............. 
} 
+0

Funziona grazie mille – Alijohnn

+0

Nota: DataValueField e DataTextField sono obbligatori quando si imposta l'origine dati, anche se si utilizza ListItems – MikeT

0

Dipende da come si impostano i valori predefiniti per il menu a discesa. Usa il valore selezionato, ma devi impostare il valore selezionato. Ad esempio, popola l'origine dati con il nome e il campo id per la tabella/elenco. Ho impostato il valore selezionato nel campo id e il display nel nome. Quando seleziono, ottengo il campo id. Lo uso per cercare una tabella relazionale e trovare un'entità/record.

2

Vedere l'esempio a questo link. Potrebbe esserti d'aiuto.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.aspx

void Page_Load(Object sender, EventArgs e) 
    { 

    // Load data for the DropDownList control only once, when the 
    // page is first loaded. 
    if(!IsPostBack) 
    { 

     // Specify the data source and field names for the Text 
     // and Value properties of the items (ListItem objects) 
     // in the DropDownList control. 
     ColorList.DataSource = CreateDataSource(); 
     ColorList.DataTextField = "ColorTextField"; 
     ColorList.DataValueField = "ColorValueField"; 

     // Bind the data to the control. 
     ColorList.DataBind(); 

     // Set the default selected item, if desired. 
     ColorList.SelectedIndex = 0; 

    } 

    } 

void Selection_Change(Object sender, EventArgs e) 
    { 

    // Set the background color for days in the Calendar control 
    // based on the value selected by the user from the 
    // DropDownList control. 
    Calendar1.DayStyle.BackColor = 
     System.Drawing.Color.FromName(ColorList.SelectedItem.Value); 

    } 
4
protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 

      drpCategory.DataSource = CategoryHelper.Categories; 
      drpCategory.DataTextField = "Name"; 
      drpCategory.DataValueField = "Id"; 
      drpCategory.DataBind(); 
     } 


    } 
+2

Bit di una spiegazione sarebbe buona. Dai un'occhiata a http://stackoverflow.com/help/how-to-answer –