簡體   English   中英

如何顯示DropDownList?

[英]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的DataTextFieldDataValueField屬性,以便它知道應該綁定到每個Pais對象的屬性。

假設Pais看起來像

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

那么您需要DataTextField="Name" DataValueField="Id"

設置DataTextField和DataValueField嗎?

聽起來好像您忘記設置下拉列表的DataValueFieldDataTextField屬性。 然后,您可以擁有甜美的小餡餅!

您必須指定要將Paise類的哪些成員顯示為“文本”和“值”字段。

這樣的事情會起作用:

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

您將需要設置dropdownlist的DataTextField和DataValueField屬性

向用戶顯示了DataTextField,而沒有顯示DataValueField。 它可以在代碼中工作。

確保使用DataTextFieldDataValueField屬性定義了希望DropDownList綁定到的屬性。

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

我也看到您的Page_Load問題。 您應該在if (!IsPostBack)檢查中包裝對DropDownListuibtnSubmit否則您將在每次回發中將其重新綁定,然后您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM