如何在ASPX页面中格式化来自DataBinder.Eval语句的数据?
例如,我希望在主页中以特定格式显示新闻项目的发布日期。我使用ASP.NET 2.0 Repeater控件来显示新闻项目列表。
代码如下所示:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<HeaderTemplate><table cellpadding="0" cellspacing="0" width="255"></HeaderTemplate>
<ItemTemplate>
<tr><td >
<a href='/content/latestNews.aspx?id=<%#DataBinder.Eval(Container.DataItem, "id") %>'>
<asp:Label ID="lblNewsTitle" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "title") %>'></asp:Label>
</a>
</td></tr>
<tr><td>
<asp:Label ID="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate"))%>'></asp:Label>
</td></tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate></asp:Repeater>有没有一种方法可以用DataBinder.Eval值作为它的参数来调用自定义方法(类似于下面的内容)?
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>如果是,那么我应该在哪里编写GetDateInHomepageFormat方法?我在代码隐藏页面中尝试,但得到一个运行时错误?如果这是不可能的,有没有办法做内联格式化?
发布于 2008-11-08 21:17:53
DataBinder.Eval有一个可选的重载来提供格式化:
<%# DataBinder.Eval(Container.DataItem, "expression"[, "format"]) %>format参数是一个字符串值,使用值占位符替换语法(称为复合格式),如下所示:
<asp:Label id="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate", "{0:dddd d MMMM}") %>'</label>发布于 2008-11-09 11:05:28
在互联网上搜索后,我发现实际上很可能是调用一个传递DataBinder.Eval值的自定义方法。
自定义方法可以在代码隐藏文件中编写,但必须声明为公共或protected。在上面的问题中,我提到了我试图在后面的代码中编写自定义方法,但得到了一个运行时错误。这样做的原因是,我已经将该方法声明为私有。
因此,总而言之,以下是使用DataBinder.Eval值获得所需输出的好方法:
default.aspx
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>default.aspx.cs代码:
public partial class _Default : System.Web.UI.Page
{
protected string GetDateInHomepageFormat(DateTime d)
{
string retValue = "";
// Do all processing required and return value
return retValue;
}
}希望这对其他人也有帮助。
发布于 2011-05-17 13:57:35
为什么不使用更简单的语法呢?
<asp:Label id="lblNewsDate" runat="server" Text='<%# Eval("publishedDate", "{0:dddd d MMMM}") %>'</label>这是模板控件"Eval“,它接受表达式和字符串格式:
protected internal string Eval(
string expression,
string format)
http://msdn.microsoft.com/en-us/library/3d2sz789.aspx
https://stackoverflow.com/questions/275194
复制相似问题