我正在尝试这样做:
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
成员。
有没有办法在不做的情况下这样做: 为每个员工。添加到列表框。
答案 0 :(得分: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();