2012-12-31 17 views
7

Hallo allerseits Ich habe ein Problem mit der Dropdown-Liste. Ich verwende Dropdown-Liste mit Datenquelle. Wie kann ich den Wert erhalten, den ich ausgewählt habe?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

Der Code wurde nicht wirklich die Frage angegebenen Informationen übereinstimmen Sie gefragt. Wir müssen den Namen/die ID der Dropdown-Liste, den Typ der verwendeten Datenquelle und die Art, wie Sie die Datenquelle an die Dropdown-Liste gebunden haben, kennen, um diese effektiv beantworten zu können. – MadHenchbot

Antwort

25

Sie können DropDownList auf verschiedene Arten binden, indem Sie List, Dictionary, Enum, DataSet DataTable verwenden.
Hauptsächlich müssen Sie drei Dinge berücksichtigen, während Sie die Datenquelle eines Dropdowns binden.

  1. Datasource - Name des Datensatz oder eine Datentabelle oder Ihre Datenquelle
  2. Datavaluefield - wird dieses Feld
  3. Datatextfield ausgeblendet werden - Dieses Feld auf dem dropdwon angezeigt wird.

können Sie folgenden Code verwenden als ein Dropdownlist zu einer Datenquelle zu binden 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(); 

, wenn Sie zur Auswahl der Dropdownlist bearbeiten möchten, dann müssen Sie AutoPostBack="true" ändern Sie SelectedIndexChanged Ereignis verwenden können um deinen Code zu schreiben.

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

Das funktioniert Vielen Dank – Alijohnn

+0

Hinweis: DataValueField und DataTextField sind erforderlich, wenn Sie Ihre Datenquelle festlegen, auch wenn Sie ListItems verwenden – MikeT

0

Es hängt davon ab, wie Sie die Standardeinstellungen für das Dropdown festlegen. Verwenden Sie den ausgewählten Wert, aber Sie müssen den ausgewählten Wert festlegen. Zum Beispiel befülle ich die Datenquelle mit dem Namen und ID-Feld für die Tabelle/Liste. Ich setze den ausgewählten Wert auf das ID-Feld und die Anzeige auf den Namen. Wenn ich wähle, erhalte ich das ID-Feld. Ich verwende dies, um eine relationale Tabelle zu suchen und eine Entität/einen Datensatz zu finden.

2

Siehe Beispiel unter diesem Link. Es kann dir helfen.

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 einer Erklärung wäre gut. Sehen Sie sich http://stackoverflow.com/help/how-to-answer an –