[英]How to display a DropDownList?
我想從數據庫中加載具有可能的Paise的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個派。 但是名稱顯示不正確。
您需要設置DropDownList的DataTextField
和DataValueField
屬性,以便它知道應該綁定到每個Pais
對象的屬性。
假設Pais
看起來像
class Pais
{
public int Id { get; set; }
public string Name { get; set; }
...
}
那么您需要DataTextField="Name" DataValueField="Id"
。
設置DataTextField和DataValueField嗎?
聽起來好像您忘記設置下拉列表的DataValueField
和DataTextField
屬性。 然后,您可以擁有甜美的小餡餅!
您必須指定要將Paise
類的哪些成員顯示為“文本”和“值”字段。
這樣的事情會起作用:
uiddlPais.DataSource = Paises;
uiddlPais.DataTextField = "Name";
uiddlPais.DataValueField = "Id";
uiddlPais.DataBind();
您將需要設置dropdownlist的DataTextField和DataValueField屬性
向用戶顯示了DataTextField,而沒有顯示DataValueField。 它可以在代碼中工作。
確保使用DataTextField
和DataValueField
屬性定義了希望DropDownList
綁定到的屬性。
<asp:DropDownList ID="uiddlPais" runat="server"
DataTextField="TheFieldWithTheTextYouWantToDisplay"
DataValueField="TheFieldWithTheValueYouWantAttached" />
我也看到您的Page_Load
問題。 您應該在if (!IsPostBack)
檢查中包裝對DropDownList
的uibtnSubmit
否則您將在每次回發中將其重新綁定,然后您的uibtnSubmit
將無法讀取所選值,因為在單擊之前您已經重新加載了DropDownList
甚至達到了。 所以它應該看起來像:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PaisRepository paisRepo = new PaisRepository();
LoadPaises(paisRepo);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.