2016-11-14 53 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