[英]ASP.net repeater problem
<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"))
不起作用,因为当前上下文中不存在容器。
确实如此。 以下在ItemTemplate中为我工作:
<%# Server.HtmlEncode((Container.DataItem as YourFancyDataSetType).Description) %>
当然,'YourFancyDataSetType'可以是任何类型。 只需将当前DataItem转换/转换为基础类型,并将其提供给您可能喜欢的任何函数。
@Edit:错别字
首先,我认为您只能使用<%# Eval("ID") %>
作为<%# DataBinder.Eval(Container.DataItem, "ID") %>
的快捷方式,它可以清理您的代码许多。 将Eval
的结果传递给方法应该没有任何问题, Eval
应该在传入之前得到评估。我相信它会以对象或字符串的形式传入; 我已经做了几年了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.