【问题标题】:eval objects property评估对象属性
【发布时间】:2012-02-25 14:40:30
【问题描述】:

我有以下两个对象

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

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      请参阅 asp.net 上的 What's the deal with Databinder.Eval and Container.DataItem? 文章。另外,请参阅此处的 GridView bound with with Properties of nested class 问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 2016-03-02
        • 2017-03-24
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多