用自定义字符串下拉,如何检索原始对象?

时间:2014-11-13 10:03:02

标签: c# asp.net

注意:我使用的添加方法是一种扩展方法 - 希望不会对下面的问题产生影响。

我有一个资源对象,其中包含两个字符串属性。 使用来自MS SQL DB的SQL查询来提取资源对象。 我想在下拉列表中列出这些对象,但是以自定义方式显示这些属性(即不是.ToString()结果)。

这就是我填充下拉列表的方式:

private void PopulateResourceDropDowns()
{
  lstResources.Items.Clear();
  lstResources.Items.Add("---Select---", Guid.Empty);

  if (Agent != null) {
    IEnumerable<Resource> res_list = Agent.Resources;
    foreach (Resource res in res_list) {
      lstResources.Items.Add(res.companyID + " :: " + res.Name, res.ID);
    }        
  }
}

我并不完全熟悉IEnumerables,我担心上面的实现导致在foreach循环的每次传递中调用SQL查询。 在这种情况下,我是否正确使用可枚举?或者我应该使用List吗?

1 个答案:

答案 0 :(得分:0)

您应该使用由

等类组成的列表来处理此类任务

public Class A
{
   public int EmployeeId{set;get;}
   public string EmployeeName{set;get;}
}

数据检索和数据绑定

List<A> objList=new List<A>();
objList=getData(); // retvire data from database 

lstResources.DataSource=objList;
lstResources.DataTextField="EmployeeName";
lstResources.DataValueField ="EmployeeId";
lstResources.DataBind();
lstResources.Items.Insert(0,new ListItem("--Select--","0"));
事情变得如此简单。