0

私がやりたいのは、MySQL データベースからの値を使用した非常に単純な選択/選択リストです。

私はオンラインで簡単な解決策を見つけようとしています (私は C# が初めてです)、見つけたものはすべて非常に複雑です。

私がやりたいことは<select><option..、設定したいすべての属性と値を使用して etc パーツを生成することだけです。

これは非常に簡単なはずです。誰か基本的な手順を教えてくれますか、またはこれを達成する方法を示すチュートリアルを教えてくれますか?

現在、クラスがデータベースと通信するためにMySqlCommandandを使用しています(別の機能用)。MySqlDataReader

4

3 に答える 3

3

表示するエンティティのクラスを作成します。例:ドロップダウンにすべての州を表示する場合は、State クラスを作成します。

public class State
{
  public int ID  { set;get;}
  public string Name { set;get;}
}

次に、データベースにクエリを実行して結果を DataReader に取得するメソッドを作成し、アイテムを繰り返し処理して、値を State クラスの新しいオブジェクトに設定します。各オブジェクトを (State クラスの) リストに追加します。したがって、メソッドの戻り値の型はStateクラス オブジェクトのリストになります。

public List<State> GetStates()
{
  List<State> stateList=new List<State>();

  // execute query, read from reader and add to the stateList
  // the below code is SqlServer DB specific.
  // you need to change the Connection,Command class for it to use with MySql.
   using (var con= new SqlConnection("replace your connection string"))
   {
      string qry="SELECT ID,NAME FROM STATES";
      var cmd= new SqlCommand(qry, objConnection);
      cmd.CommandType = CommandType.Text;           
      con.Open();
      using (var objReader = cmd.ExecuteReader())
      {
        if (objReader.HasRows)
        {
           while (objReader.Read())
           {
             var item=new State();
             item.ID=reader.GetInt32(reader.GetOrdinal("ID"));
             item.Name=reader.GetString(reader.GetOrdinal("Name"));

             stateList.Add(item);
           }
         }
       }
    }
    return stateList;
}

次に、ページに DropDownList コントロールを配置します。

<asp:DropDownList id="states" runat="server" />

このページの分離コードで、ドロップダウンのデータを設定できます (おそらく Page_Load イベントで)。

if(!isPostBack)
{  
  states.DataSource=yourRepositary.GetStates();
  states.DataTextField="Name";
  states.DataValueField="ID";
  states.DataBind(); 
}
于 2012-10-22T12:55:52.163 に答える
0

一般に、リスト/ドロップダウンでは、(a)選択される値と、(b)ユーザーへの表示が表示されます。最初のキーは主キーであり、2番目のキーはユーザーに自明のラベルである可能性があります。

あなたが次のようなテーブルFOODを持っていると仮定します

FoodValue | FoodLabel
---------------
00010     | Sausage
00020     | Eggs
00030     | Cheese

リストボックスをASP.NETビュー(listBox1など)に配置すると、コードビハインドでリストボックスを読み取ることができます。

MySqlConnection con = new MySqlConnection("YOUR CONNECTION STRING");
MySqlCommand cmd = new MySqlCommand("SELECT FoodValue, FoodLabel FROM FOOD", con);
con.Open();
MySqlDataReader r = cmd.ExecuteReader();

while(r.Read()) {
    listBox1.Items.Add(new ListItem(r["FoodLabel"], r["FoodValue"]);
}
con.Close();

ただし、これは迅速で汚いアプローチであることに注意してください。本番コードでは、プレゼンテーション層とデータ層をある程度分離する必要があります。データソースコントロールを使用して、より適切な方法でデータをバインドします。

于 2012-10-22T12:52:08.790 に答える
0

あなたが探しているのは のようなものだと思います. をDropDownList受け入れるDataSourceので、すでに入力MySqlDataReaderされているものをそのまま使用できます.

このようなもの

MySqlDataReader dr = //the code to fill the MySqlDataReader
DropDownList1.DataSource = dr;

ページのデザインで DropDownList を作成できます。

設定する必要があるデータを表示するには、次に値を表示します

DropDownList1.DataValueField = "DbField1";
DropDownList1.DataTextField = "DbField2";
于 2012-10-22T12:55:07.790 に答える