[英]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.