簡體   English   中英

如何在Dropdownlist控件中同時顯示程序的名稱和ID

[英]How to display both Name and ID of a program in Dropdownlist control

我的項目顯示的程序名稱從數據庫到下拉列表中,每個程序都有一個ID。 我想在下拉列表中同時顯示名稱和ID,以便可以區分它們。 例如:“加利福尼亞生命線(CLA)”,其中“加利福尼亞生命線”是程序的名稱,id是“ CLA”。 我創建了一個存儲過程,該存儲過程根據程序ID顯示數據。

這是我的dropdownlist控件的代碼。

private void LoadProgramName()
{
    _drp_program = (DropDownList)Page.FindControl("bodyuc$drp_program");

    dsprg = rProxy.GlobalFetchFromDB(strCountyName, "DBO.oea_sp_get_onoff_programNames");

    _drp_program.DataSource = dsprg;
    _drp_program.DataTextField = "PROG_NAME";
    _drp_program.DataValueField = "PROGRAM_ID";
    _drp_program.DataBind(); ;

    ListItem lst_prog = new ListItem();
    lst_prog.Value = "";
    lst_prog.Text = "--Select One--";
    _drp_program.Items.Insert(0, lst_prog);
    _drp_program.Items.Insert(1, "ALL");

}

順便說一句,下拉菜單是頁面控件的一部分。

幫助是無價之寶。

如果您的GlobalFetchFromDB()返回一個對象的實例,您可以將該對象的實例“擴展”為部分類,則可以在該類中添加“ helper”屬性,以格式化顯示的字符串。

這樣做的一個好處是,格式可以取決於實例中其他屬性的值。

例如:

public partial class ProgramItem
{
    public string DisplayName { get { return PROG_NAME.ToUpper(); } }
}

然后使用_drp_program.DataTextField = "DisplayName";

一種替代方法是構造一個類,該類封裝返回的項並將DisplayName添加為裝飾器。

而不是將_drp_program綁定到dsprg,而是循環遍歷dsprg中的結果並分別添加每個項目。

foreach(dsprgObject in dsprg)
{
   _drp_program.Items.add(new ListItem(dsprgObject .ColA + " " + dsprgObject .ColB, dsprgObject.PROGRAM_ID));
}

你可以試試

_drp_program.DataSource = from item in dsprg
                            select new
                            {
                                PROG_NAME = string.Format("{0}({1})", item.PROG_NAME, item.PROGRAM_ID) ,
                                PROGRAM_ID = item.PROGRAM_ID
                            };

代替

 _drp_program.DataSource = dsprg;

通常,最快的方法是在SQL查詢中連接ID和NAME(但是您使用的是sp,因此有點困難)。 另外,由於您在代碼中綁定了控件,因此可以在代碼中並置ID和名稱,並手動填充下拉列表(通過調用Items.Insert或將您的下拉列表綁定到成員具有包含串聯值的字段/屬性的集合) )。 AFAIK,您只能為DataTextField和DataValueField指定字段/屬性名稱,不能指定表達式等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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