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();
}

の中EmployeGroupEmployeeと グループがあります。従業員のメンバーを表示したいEmployeName

何もせずにこれを行う方法はありますか: 各従業員に対して。リストボックスに追加します。

4

1 に答える 1

1

いくつかの選択肢があります。Employee クラスを拡張して、EmployeeNameAndId という新しいプロパティを導入することができます。

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

もう 1 つのオプションは、OnDataBinding イベントをオーバーライドし、そこで 2 つのプロパティを連結することです。これはお勧めしません。他の理由の中でも特にお粗末なカプセル化ですが、オプションに注意してください.

最後のオプションは、クエリから中間データ ソースを作成し、それにバインドすることです。

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 に答える