0

我正在尝试这样做:

protected void Page_Load(object sender, EventArgs e)
{
   Group g = SecurityManager.GetGroup("Programmers");

   IEnumerable<EmployeGroup> emps = 
       SecurityManager.GetEmployeesByGroup(g.GroupID);
   ListBox1.DataSource = emps;
   ListBox1.DataTextField = "Employee.EmployeName";
   ListBox1.DataBind();
}

在一个EmployeGroup里面有一个Employee和一个组。我想显示员工的EmployeName成员。

有没有什么方法可以做到这一点:对于每个员工。添加到列表框。

4

1 回答 1

1

你有几个选择。您可以扩展 Employee 类并引入一个名为 EmployeeNameAndId 的新属性

public string EmployeeNameAndId 
{ 
       get 
       { 
          return String.Format("{0} ({1})", EmployeeName, EmployeeId); 
       }
}

另一种选择是覆盖 OnDataBinding 事件并在那里连接两个属性。我不推荐这个;除其他原因外,这是糟糕的封装,但我希望您了解该选项。

最后一个选项是从您的查询中创建一个中间数据源并绑定到该数据源:

var employees = SecurityManager.GetEmployeesByGroup(g.GroupID).Select(e => new { EmployeeNameAndId = e.EmployeeName + " (" + e.EmployeeId + ")"});

ListBox1.DataSource = employees ;
ListBox1.DataTextField = "EmployeeNameAndId";
ListBox1.DataBind();
于 2013-01-22T18:04:07.583 回答