我想从我的数据库加载带有可能的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。但名称显示不正确。
答案 0 :(得分:1)
您需要设置DropDownList的DataTextField
和DataValueField
属性,以便它知道它应绑定到的每个Pais
对象的哪些属性。
假设Pais
看起来像
class Pais
{
public int Id { get; set; }
public string Name { get; set; }
...
}
然后你想要DataTextField="Name" DataValueField="Id"
。
答案 1 :(得分:0)
设置DataTextField和DataValueField?
答案 2 :(得分:0)
听起来您忘记设置下拉列表的DataValueField
和DataTextField
属性。然后你就可以拥有你的甜蜜小蛋了!
答案 3 :(得分:0)
您必须指定要将Paise
类的哪些成员显示为“文本”和“值”字段。
这样的事情会起作用:
uiddlPais.DataSource = Paises;
uiddlPais.DataTextField = "Name";
uiddlPais.DataValueField = "Id";
uiddlPais.DataBind();
答案 4 :(得分:0)
你需要设置dropdownlist的DataTextField和DataValueField属性
DataTextField显示给用户,DataValueField未显示。它适用于代码。
答案 5 :(得分:0)
确保使用DropDownList
和DataTextField
属性定义了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);
}
}