首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化DataBinder.Eval数据

格式化DataBinder.Eval数据
EN

Stack Overflow用户
提问于 2008-11-08 20:58:00
回答 10查看 106.5K关注 0票数 30

如何在ASPX页面中格式化来自DataBinder.Eval语句的数据?

例如,我希望在主页中以特定格式显示新闻项目的发布日期。我使用ASP.NET 2.0 Repeater控件来显示新闻项目列表。

代码如下所示:

代码语言:javascript
复制
<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值作为它的参数来调用自定义方法(类似于下面的内容)?

代码语言:javascript
复制
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>

如果是,那么我应该在哪里编写GetDateInHomepageFormat方法?我在代码隐藏页面中尝试,但得到一个运行时错误?如果这是不可能的,有没有办法做内联格式化?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-11-08 21:17:53

DataBinder.Eval有一个可选的重载来提供格式化:

代码语言:javascript
复制
<%# DataBinder.Eval(Container.DataItem, "expression"[, "format"]) %>

format参数是一个字符串值,使用值占位符替换语法(称为复合格式),如下所示:

代码语言:javascript
复制
<asp:Label id="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate", "{0:dddd d MMMM}") %>'</label>
票数 59
EN

Stack Overflow用户

发布于 2008-11-09 11:05:28

在互联网上搜索后,我发现实际上很可能是调用一个传递DataBinder.Eval值的自定义方法。

自定义方法可以在代码隐藏文件中编写,但必须声明为公共protected。在上面的问题中,我提到了我试图在后面的代码中编写自定义方法,但得到了一个运行时错误。这样做的原因是,我已经将该方法声明为私有

因此,总而言之,以下是使用DataBinder.Eval值获得所需输出的好方法:

default.aspx

代码语言:javascript
复制
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>

default.aspx.cs代码:

代码语言:javascript
复制
public partial class _Default : System.Web.UI.Page
{

    protected string GetDateInHomepageFormat(DateTime d)
    {

        string retValue = "";

        // Do all processing required and return value

        return retValue;
    }
}

希望这对其他人也有帮助。

票数 14
EN

Stack Overflow用户

发布于 2011-05-17 13:57:35

为什么不使用更简单的语法呢?

代码语言:javascript
复制
<asp:Label id="lblNewsDate" runat="server" Text='<%# Eval("publishedDate", "{0:dddd d MMMM}") %>'</label>

这是模板控件"Eval“,它接受表达式和字符串格式:

代码语言:javascript
复制
protected internal string Eval(
string expression,
string format

)

http://msdn.microsoft.com/en-us/library/3d2sz789.aspx

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/275194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档