2011-04-19 32 views
0

我的項目顯示的程序名稱從數據庫到下拉列表中,每個程序都有一個ID。我想在下拉列表中顯示名稱和ID,以便它們可以相互區分。 例如:'california lifeline(CLA)' 其中'california lifeline'是程序的名稱,id是'CLA'。我創建了一個存儲過程,根據程序ID顯示數據。如何在Dropdownlist控件中同時顯示程序的名稱和ID

這是我的下拉列表控件的代碼。

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"); 

} 

順便說一下,下拉菜單是pagecontrol的一部分。

幫助被評價。

+0

嘿@user我讀了一些你的問題,我們編程的東西看起來很相似,利潤。只是覺得這有點奇怪。如果沒有太多的信息要提供,你的工作是爲哪個公司做的? – Earlz 2011-06-17 19:49:13

回答

0

如果你的GlobalFetchFromDB()返回一個對象的實例,你可以「擴展」爲一個分類,那麼我會添加一個「helper」屬性給格式化你顯示的字符串的類。

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

例如:

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

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

另一種方法是構造一個封裝了返回的項,並增加了DisplayName的作爲裝飾的類。

0

不是將_drp_program綁定到dsprg,而是循環訪問dsprg中的結果並單獨添加每個項目。

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

只有當您不需要稍後訪問SelectedItem作爲從GlobalFetchFromDB()返回的對象的實例時,也可以。您已經丟失了所有返回對象的信息,而不是ID值。 – 2011-04-19 17:26:41

0

您可以嘗試

_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; 
+0

它給了我這個錯誤消息:無法找到源類型'System.Data.DataSet'的查詢模式的實現。 '選擇'未找到。 – userstackoverflow 2011-04-19 18:00:20

0

通常情況下,最快的方式是連接ID和名稱的SQL查詢(但您使用的是SP所以這有點困難)。此外,由於您在代碼中綁定控件,因此可以在代碼中連接ID和Name,並手動填充下拉列表(可以通過調用Items.Insert或將下拉列表綁定到集合,其中的成員具有包含連接值的字段/屬性)。 AFAIK,你只能爲DataTextField和DataValueField指定一個字段/屬性名稱,沒有表達式等...

相關問題