eval对象属性

本文关键字:属性 对象 eval | 更新日期: 2023-09-27 18:22:13

我有以下两个对象

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。想法?

eval对象属性

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

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

因为中继器绑定到ProgramObj对象的列表,所以DataItem将是ProgramObj。因此,如果您想要PersonObj对象,则需要获取myPerson属性。

请参阅Databinder.Eval和Container.DataItem怎么了?asp.net上的文章。另外,请参阅这里的这个与嵌套类的属性绑定的GridView问题。

相关文章: