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。想法?
如果你这样做,你的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问题。