<asp:Repeater runat="server" ID="QuestionList">
<ItemTemplate>
<tr align="center">
<td><a href="HelpViewTicket.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID") %>"><%# DataBinder.Eval(Container.DataItem, "ID") %></a></td>
<td><a href="HelpViewTicket.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID") %>"><%# DataBinder.Eval(Container.DataItem, "Subject")%></a></td>
<td><abbr class="timeago" title="2008-07-17T09:24:17Z"><%# CommonFunctions.NiceDateTime(DataBinder.Eval(Container.DataItem, "DateSubmitted"))%></abbr></td>
<td></td>
<td><%# DataBinder.Eval(Container.DataItem, "Priority")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
我的转发器工作正常,但如何通过传递函数来格式化它使用的数据?例如,行:
CommonFunctions.NiceDateTime(DataBinder.Eval(Container.DataItem, "DateSubmitted"))
不起作用,因为当前上下文中不存在容器。
答案 0 :(得分:1)
确实如此。以下在ItemTemplate中为我工作:
<%# Server.HtmlEncode((Container.DataItem as YourFancyDataSetType).Description) %>
当然,'YourFancyDataSetType'可以是任何类型。只需将当前DataItem转换/转换为基础类型,并将其提供给您可能喜欢的任何函数。
@Edit:拼写错误
答案 1 :(得分:1)
首先,我认为您只能使用<%# Eval("ID") %>
作为<%# DataBinder.Eval(Container.DataItem, "ID") %>
的快捷方式,它可以清理您的代码。将Eval
的结果传递给方法应该没有任何问题,Eval
应该在传入之前得到评估。我相信它会作为对象或字符串传入,尽管;我已经做了几年了。