не для того, чтобы ответить на ваш вопрос напрямую, но, учитывая ваше мнение
для такого рода данных, по моему мнению, вы должны использовать элемент управления GridView, взяв ваш пример, вам нужно написать что-то вроде:
<asp:Repeater ID="rpt" runat="server" DataSourceID="ods">
<HeaderTemplate>
<table>
<tr>
<td>Header</td>
<td>Type</td>
<td>Name</td>
<td>Date</td>
<td>Amount</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Header")%>
</td>
<td>
<%#Eval("Type")%>
</td>
<td>
<%#Eval("Name")%>
</td>
<td>
<%#Eval("Date", "{0:d}")%>
</td>
<td>
<%#Eval("Value", "{0:c}")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
с использованием GridView все, что нужно для записи в части HTML, это только:
<asp:GridView ID="gv" runat="server" DataSourceID="ods" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Header" HeaderText="Header" />
<asp:BoundField DataField="Type" HeaderText="Type" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Date" DataFormatString="{0:d}" HeaderText="Date" />
<asp:BoundField DataField="Value" DataFormatString="{0:c}" HeaderText="Value" />
</Columns>
</asp:GridView>
что-то проще и легче для чтения
у вас будет намного больше контроля, используя объект GridView, а не Repeater, и у вас никогда не будет таких проблем, потому что рендеринг gridView всегда будет идти с тегами таблицы.
Надеюсь, это поможет
И, кстати, я проверил ваш случай, и у меня не возникло никаких проблем, даже если я не писал такие теги, как упоминание Спенсера.
чтобы увидеть мой код: Файл с HTML и методом - Файл с myObject