eval对象属性

时间:2012-02-02 22:19:34

标签: c# asp.net

我有以下两个对象

public partial class ProgramObj
{
  public int id;
  public PersonObj myPerson;
}

public class PersonObj
{
   public int id;
   public string full_name;
}

我正在从SqlDataReader中为一个转发器分配一个ProgramObj列表

program_list.DataSource = reader;
program_list.DataBind();

我想要做的是访问每个ProgramObj中PersonObj的full_name属性 我尝试过多种方法,唯一能让我获得输出值的是

<%# DataBinder.Eval(Container.DataItem, "id") %>

它让我获得了ProgramObj的id,但我想得到PersonObj的名字,我想

<%# DataBinder.Eval(Container.DataItem, "myPerson.full_name") %>

会起作用,但它似乎没有让我到任何地方。

我还尝试了一个带有

的ItemDataBound
PersonObj myPerson = (PersonObj)e.Item.DataItem;
lblUserName.Text = myPerson.Full_Name_RFL;

<%# DataBinder.Eval(Container.DataItem, "myPerson") %>

但我得到一个错误,它无法将类型DataRecordInternal的对象强制转换为PersonObj。想法?

2 个答案:

答案 0 :(得分:1)

如果你这样做,你的ItemDataBound应该可以工作:

PersonObj myPerson = ((ProgramObj)e.Item.DataItem).myPerson;
lblUserName.Text = myPerson.full_name;

Becausse转发器绑定到ProgramObj对象的列表,DataItem将是ProgramObj。因此,如果需要PersonObj对象,则需要获取myPerson属性。

答案 1 :(得分:1)