如何显示DropDownList?

时间:2010-08-20 19:13:08

标签: c# asp.net drop-down-menu

我想从我的数据库加载带有可能的Paises的DropDownList。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Backend;
using Backend.Models;

namespace Frontend_UI_Web.Administrativos
{
    public partial class Ciudad : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            PaisRepository paisRepo = new PaisRepository();
            LoadPaises(paisRepo);

            CiudadRepository ciudadRepo = new CiudadRepository();            
        }

        private void LoadPaises(PaisRepository paisRepo)
        {
            //FindAll() returns a collection IQueryable<Pais>!
            var Paises = paisRepo.FindAll().AsEnumerable();
            uiddlPais.DataSource = Paises;
            uiddlPais.DataBind();
        }

        protected void uibtnSubmit_Click(object sender, EventArgs e)
        {

        }
    }
}

任何指导?如果我运行此代码,下拉列表会加载5个项目,这是正确的,因为我有5个paises。但名称显示不正确。

6 个答案:

答案 0 :(得分:1)

您需要设置DropDownList的DataTextFieldDataValueField属性,以便它知道它应绑定到的每个Pais对象的哪些属性。

假设Pais看起来像

class Pais
{
    public int Id { get; set; }
    public string Name { get; set; }
    ...
}

然后你想要DataTextField="Name" DataValueField="Id"

答案 1 :(得分:0)

设置DataTextField和DataValueField?

答案 2 :(得分:0)

听起来您忘记设置下拉列表的DataValueFieldDataTextField属性。然后你就可以拥有你的甜蜜小蛋了!

答案 3 :(得分:0)

您必须指定要将Paise类的哪些成员显示为“文本”和“值”字段。

这样的事情会起作用:

uiddlPais.DataSource = Paises;
uiddlPais.DataTextField = "Name";
uiddlPais.DataValueField = "Id";
uiddlPais.DataBind();

答案 4 :(得分:0)

你需要设置dropdownlist的DataTextField和DataValueField属性

DataTextField显示给用户,DataValueField未显示。它适用于代码。

答案 5 :(得分:0)

确保使用DropDownListDataTextField属性定义了DataValueField要绑定的属性。

<asp:DropDownList ID="uiddlPais" runat="server"
    DataTextField="TheFieldWithTheTextYouWantToDisplay"
    DataValueField="TheFieldWithTheValueYouWantAttached" />

此外,我在Page_Load中发现了问题。您应该在DropDownList支票中包含if (!IsPostBack)的初始化,否则您将使用每次回发重新绑定它,然后您的uibtnSubmit将无法读取所选的值,因为您在达到点击之前会重新加载DropDownList。所以看起来应该是这样的:

protected void Page_Load(object sender, EventArgs e)   
{
    if (!IsPostBack)
    {   
        PaisRepository paisRepo = new PaisRepository();   
        LoadPaises(paisRepo);
    }
}