2014-02-24 22 views
0

我在中繼器內部有一箇中繼器,並且我試圖將子中繼器與會話中的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> 

,這將引發以下消息:

其他信息:數據綁定:「系統.String'不包含名稱爲'akaList'的屬性。

如何將此列表綁定到中繼器?

編輯

的Container.DataItem照顧它。

+0

您的「實體」是否有名爲「akaList」的列? –

+0

我正在創建一個基於實體的新列表,然後需要將該列表綁定到子中繼器。 – CSharpNewBee

+0

您是否試圖將您的收割者綁定到(IEnumerable )結果? –

回答

1

Container.DataItem您的直放站正在迭代的當前項目。這不是字符串列表,它是單獨的每個字符串。

想到你會更僞代碼的形式在做什麼:

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

當您引用Container.DataItem,它是相同的,作爲解決上面的例子a_single_string

不是幾乎適用於遠程代碼,但我希望它解釋了爲什麼你會得到錯誤。您實際上要求字符串的屬性「akaList」,因此是錯誤。