如何在下拉列表控件中显示程序的名称和ID
本文关键字:ID 程序 显示 下拉列表 控件 | 更新日期: 2023-09-27 17:50:40
我的项目显示的程序名称从数据库到下拉列表,每个程序都有一个ID。我想在下拉列表中同时显示name和id,以便它们能够相互区分。加州生命线(CLA)"加州生命线"是这个项目的名称,id是"CLA"。我已经创建了一个存储过程,它根据程序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");
}
顺便说一下,下拉菜单是pagcontrol的一部分。
感谢您的帮助
如果你的GlobalFetchFromDB()返回一个对象的实例,你可以"扩展"作为一个部分类,那么我会添加一个"助手"属性的类格式显示字符串
这样做的一个好处是,该格式可以依赖于实例中其他属性的值。
例如: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和Name,并手动填充下拉列表(通过调用Items。插入或通过将下拉框绑定到一个集合,该集合的成员具有包含连接值的字段/属性)。AFAIK,你只能为DataTextField和DataValueField指定一个字段/属性名,没有表达式等…