根据收集位置绑定转发器

时间:2014-02-24 13:10:36

标签: c# asp.net

我在转发器中有一个转发器,我试图将子转发器与会话中的Aka列表绑定。

我的代码隐藏看起来像:

     var results = HttpContext.Current.Session["completeRecord"];

     var rep = (Repeater)e.Item.FindControl("rptAkas");

     var akaList = new List<string>();

     foreach (Entity list in (IEnumerable<Entity>) results)
     {
         akaList.AddRange(list.Aka);
     }
     rep.DataSource = akaList;
     rep.DataBind();

在我的儿童中继器中,我有以下内容:

    <asp:Repeater runat="server" ID="rptAkas" OnItemDataBound="repeater_OnItemDataBound">
      <ItemTemplate>
        <p><strong>Aka</strong><asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "akaList")  %>'></asp:Literal></p>
      </ItemTemplate>
    </asp:Repeater>

这会抛出以下消息:

附加信息:DataBinding:'System.String'不包含名为'akaList'的属性。

如何将此列表绑定到转发器?

修改

Container.DataItem处理它。

1 个答案:

答案 0 :(得分:1)

Container.DataItem 您的Repeater迭代的当前项目。它不是字符串列表,而是每个字符串。

想想你正在以更多伪代码形式做什么:

foreach ( var a_single_string in Repeater.DataSource )
{
    var some_var = a_single_string.akaList;
}

当您引用Container.DataItem时,它与上述示例中的a_single_string地址相同。

远远不是实际适用的代码,但我希望它能解释为什么你会收到错误。您实际上是要求字符串的属性“akaList”,因此错误。