6

asp.net(コードビハインド)でドロップダウンリストを作成する最も簡単な方法は何ですか? データテーブルとデータ アダプターを使用してグリッドを埋める方法を学習しました。データ テーブルとデータ アダプタを使用してドロップドン リストを設定できますか? これが私の試みです..

public partial class page3 : System.Web.UI.Page
{
  public DataTable fillmydropdownlist()
  {
     DataTable drpdt = new DataTable();
     string q = "select flightdate from flightdetails";
     SqlCommand cmd = new SqlCommand(q,con);
     try
     {
         SqlDataAdapter da2 = new SqlDataAdapter(cmd);
     }
     catch { }
     return drpdt;
  }

  protected void Page_Load(object sender, EventArgs e)
  {
    dbOperation dbo = new dbOperation();
    DataTable dt = new DataTable();
    dt = dbo.fillmydropdownlist();
    DataTable drpdt= new DataTable();

    if (dt.Rows.Count > 0)
    {
        DropDownList1.DataSource = drpdt;
        DropDownList1.DataBind();
    }
    else
    {
        Response.Write("No Data");
    }
  }
}
4

6 に答える 6

10

DataTextField および DataValueField プロパティを使用できます。

ListControl.DataTextField プロパティ

DropDownList1.DataSource = drpdt; 
DropDownList1.DataTextField="StringValue";
DropDownList1.DataValueField="CurrencyValue";
DropDownList1.DataBind(); 

または、ListItem を 1 つずつ追加します。

ASP.Net DropDownList DataTextField複数の列

于 2012-10-19T17:36:13.567 に答える
2

Win とcodingbiz が提案するソリューションは最も簡単ですが、最も簡単なシナリオのみを対象としています。すべての DropDown をそのようにバインドする必要があるわけではありません。場合によっては、2 つ (またはそれ以上) の値を Listitem にバインドする必要があるインスタンスがあり、DataTable 行を反復処理することで例が行ったようなことをするようになりますが、代わりに...

foreach (DataRow dr in dt.Rows) {
    DropDownList1.Items.Add(new ListItem(dr["flightdate"], dr["flightnum"] + ":" + dr["flightcarrier"]));
}

後でString.Split(":")(0)orString.Split(":")(1)を実行して、最初と 2 番目の ListItem 値を取得できます。

全体として、それは本当にあなたのニーズが何であるかに依存します.

于 2012-10-19T18:28:02.957 に答える
2

Moojjooの提案 ---

  private string FillBizNameCountyDdl()
    {
        string returnText;
        string nameAndCounty;
        string id;


        try
        {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("Select *  FROM [tbl_name_county_web_search] ORDER BY main", conn))
                {
                    cmd.CommandType = CommandType.Text;
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                nameAndCounty = reader["main"].ToString();
                                id = reader["id"].ToString();
                                ddlBizNameAndCounty.Items.Add(new ListItem(nameAndCounty, provId));                  
                            }
                        }                            
                    }
                }
            }
        }
        catch (Exception ex)
        {
            return ex.Message.Trim();
        }
        returnText = "Success";
        ddlBizNameAndCounty.Items.Insert(0, new ListItem("--Select Provider--"));
        ddlBizNameAndCounty.DataBind();
        return returnText;
  }
于 2013-12-09T18:54:47.013 に答える
2

データバインドされたすべてのコントロールは、DataTable および IEnumerable を実装する任意のオブジェクト (文字列の配列など) にバインドできます。DropdownList はデータバインドされたコントロールなので、答えははいです。

if (dt.Rows.Count > 0)
{
    DropDownList1.DataTextField = "FlightDescription";
    DropDownList1.DataValueField = "FlightID";
    DropDownList1.DataSource = drpdt;
    DropDownList1.DataBind();
}

MarkUp から DataXXXField プロパティを設定することもできます

<asp:DropdownList ID="DropDownList1" runat="server" 
                  DataTextField="FlightDescription" DataValueField="FlightID">
</asp:DropdownList>
于 2012-10-19T17:53:05.080 に答える
0
<asp:DropDownList ID="DropDownList1" runat="server" DataTextField="StringValue" 
            DataValueField="CurrencyValue">
        </asp:DropDownList>



//C#:

DropDownList1.DataSource = drpdt; 
DropDownList1.DataBind(); 
于 2012-10-20T05:00:37.693 に答える