2017-09-01 79 views
0

背景:我的數據模型是List<PersonDetail>,其中PersonDetail包含像FirstNameLastName等屬性,並且列表可以是任何大小。如何使用asp.net控件創建具有動態列的表?

我想創建一個表,可以並排比較這些PersonDetails。這意味着對於每一列我需要將這些數據放在一個PersonDetail中,並將其分佈在我的8行中。然後爲下一個PersonDetail做同樣的事情。

我有一個約束,我只能沿着使用Asp.Net控制(ListViewGridViewRepeater等)control.DataSourcecontrol.DataBind()創建我的表。

我想要做的模板是一樣的東西:

<LayoutTemplate> 
    <table> 
    <tr> 
     <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder> 
    </tr> 
    <tr> 
     <asp:PlaceHolder runat="server" ID="itemPlaceHolder2"></asp:PlaceHolder> 
    </tr> 
    <!-- and so on --> 
    </table> 
</LayoutTemplate> 

<ItemTemplate1> 
    <td> 
    <asp:Label ID="LabelFirstName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FirstName")%>'></asp:Label> 
    </td> 
</ItemTemplate1> 

<ItemTemplate2> 
    <td> 
    <asp:Label ID="LabelLastName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LastName")%>'></asp:Label> 
    </td> 
</ItemTemplate2> 

<!-- and so on --> 

當上述ItemTemplates將是在表中重複的唯一部分。

我已經嘗試了所有三個控制選項,它似乎不支持沒有複雜的代碼隱藏。

是否有更好的數據模型,我可以使用它可以與另一個控件進行交互?我見過像DataTable這樣的解決方案,但不知道這是否能解決我的問題。

任何想法?

+0

爲什麼不換一個''

中繼器與創建''在每個'ItemTemplate' – VDWWD

+0

問題與,如果我沒有錯,直放站將創建一組新的8行對於每個PersonDetail,我最終會得到1列8 x的Details.count行數。 –

+0

您可以根據需要在ItemTemplate中創建任意數量的表格行和列,不需要將自己限制在一個'​​' – VDWWD

回答

0
<table border="1"> 
    <asp:Repeater ID="Repeater1" runat="server"> 
     <ItemTemplate> 
      <tr> 
       <td><%# DataBinder.Eval(Container.DataItem, "FirstName") %></td> 
       <td><%# DataBinder.Eval(Container.DataItem, "LastName") %></td> 
      </tr> 
      <tr> 
       <td><%# DataBinder.Eval(Container.DataItem, "Street") %></td> 
       <td><%# DataBinder.Eval(Container.DataItem, "City") %></td> 
      </tr> 
     </ItemTemplate> 
    </asp:Repeater> 
</table> 
+0

好的,謝謝,我會嘗試這種方法,但我擔心我只會得到一列。我們拭目以待。 –

+0

我已經切換到使用DataTable和GridView與自動生成的列。謝謝你! –

相關問題