2016-11-14 51 views
0

我遇到了一个问题,将结构列表的内容绑定到中继器。中继器绑定到结构列表清单

如果使用<%# Container.DataItem %>那么我得到正确的条目数显示,但每个条目不包含任何数据只是一个“通用结构”消息。

如果使用Eval("struct.property")我得到的错误结构没有这样的属性。

的代码片段如下:

struct myStruct 
{ 
    public col { get; set; } 
    public row { get; set; } 
    public addr { get; set; } 

    public myStruct(p1, p2) 
    { 
     col = p1; 
     row = p2; 
     addr = "(" + p1 ":" + p2 + ")"; 
    } 
} 

private List<List<myStruct>> allRowCols = new List<List<myStruct>>(); 


for(...) 
{ 
    private List<myStruct> RowCols = new List<myStruct>(); 
    for(...) 
    { 
     ... 
     RowCols.Add(new myStruct(aRow, aCol)); 
    } 
    allRowCols.Add(RowCols); 
} 

MyRepeater.DataSource = allRowCols; 
MyRepeater.DataBind(); 

<asp:Repeater ID="myReapter"...> 
    <ItemTemplate:> 
     <span>'<%# Eval("addr") %></span> 
    <!-- or ->> 
     <asp:TextBox runat="Server" Text='<%# Eval("addr") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

在执行时产生错误:

... myStruct does not contain a property with the name 'addr'

我如何能得到它的输出在转发我所有的排山坳对的地址,任何想法?

回答

0

这可能会修正这个错误

<asp:Repeater ID="MyRepeater" runat="server" DataSource='<%# Eval("RowCols") %>'> 
    <ItemTemplate:> 
     <span>'<%# Eval("addr") %></span> 
     <!-- or ->> 
     <asp:TextBox runat="Server" Text='<%# Eval("addr") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

,或者您也可以获取像

<%# ((ArrayFields)Container.DataItem).allRowCols[0].addr %> 
+0

@MohitThe第一部分摆脱了错误味精的,但没有任何输出值。在第二部分'ArrayFields'没有在任何程序集中,我不知道它是如何/为什么它是相关的?!?! – user2715390