2012-12-31 15 views
7

こんにちは、私はドロップダウンリストについて問題があります。私はデータソースとドロップダウンリストを使用しています。どのように私が選んだその価値を得ることができますか?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

あなたが記載されたコードは、本当にあなたが尋ねた質問と一致していません。ドロップダウンリストの名前/ ID、使用したデータソースのタイプ、およびこれに効果的に回答するためにデータソースをドロップダウンリストにバインドする方法を知る必要があります。 – MadHenchbot

答えて

25

List, Dictionary, Enum, DataSet DataTableを使用すると、さまざまな方法でDropDownListをバインドできます。
メインあなたはドロップダウンのデータソースをバインドする際に3つのことを考慮する必要があります。

  1. データソース - データセットまたはデータテーブルまたはあなたのデータソースの名前
  2. DataValueField - これらのフィールドは
  3. DataTextField非表示になります - これらのフィールドは、dropdwonに表示されます。

    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(); 
    

    あなたがドロップダウンリストの選択に処理したい場合は、その後、あなたは変更する必要がAutoPostBack="true"あなたはSelectedIndexChangedイベントを使用することができます:あなたはdatatableとしてデータソースにDropDownListコントロールをバインドするために、次のコードを使用することができます

あなたのコードを書く。

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

これは大変ありがとうございます – Alijohnn

+0

注:ListItemsを使用していても、データソースを設定するときはDataValueFieldとDataTextFieldが必要です – MikeT

0

どのようにドロップダウンのデフォルトを設定するかによって異なります。選択した値を使用しますが、選択した値を設定する必要があります。たとえば、データソースにテーブル/リストの名前とIDフィールドを設定します。選択した値をidフィールドに設定し、名前を表示します。選択すると、IDフィールドが表示されます。私はこれを使ってリレーショナルテーブルを検索し、実体/レコードを見つける。

2

このリンクの例を参照してください。それはあなたに役立つかもしれません。

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の説明が良いでしょう。 http://stackoverflow.com/help/how-to-answerを見てください –