ASP.net转发器问题

时间:2011-04-04 15:27:27

标签: c# asp.net repeater

    <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"))

不起作用,因为当前上下文中不存在容器。

2 个答案:

答案 0 :(得分:1)

确实如此。以下在ItemTemplate中为我工作:

<%# Server.HtmlEncode((Container.DataItem as YourFancyDataSetType).Description) %>

当然,'YourFancyDataSetType'可以是任何类型。只需将当前DataItem转换/转换为基础类型,并将其提供给您可能喜欢的任何函数。

@Edit:拼写错误

答案 1 :(得分:1)

首先,我认为您只能使用<%# Eval("ID") %>作为<%# DataBinder.Eval(Container.DataItem, "ID") %>的快捷方式,它可以清理您的代码。将Eval的结果传递给方法应该没有任何问题,Eval应该在传入之前得到评估。我相信它会作为对象或字符串传入,尽管;我已经做了几年了。