从转发器解析值

时间:2014-03-27 14:48:24

标签: c# asp.net webforms

<asp:Repeater ID="repeater" runat="server" OnItemDataBound="repeater_ItemDataBound">

<HeaderTemplate>
    <ul class="sf_newsList">
</HeaderTemplate>

<ItemTemplate>  
<asp:Literal ID="Publication_Date" runat="server" Text="{0}" />
...

好的,所以我有一个从源头回来的日期,我需要将这个日期剥离到当前的日期和月份 回来就像“2012年3月12日”。

一旦解析为一天和一个月的字符串,我想将其传回

<asp:Literal ID="Publication_Day" runat="server" Text="{0}" />

现在我尝试了一些诸如

之类的东西
protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    string newsdate = "";
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==  ListItemType.AlternatingItem)
    {
        Literal ltDate = (Literal)e.Item.FindControl("Publication_Date");
        newsdate = ltDate.Text;
        //do parse code
        Literal ltDay = (Literal)e.Item.FindControl("Publication_Day");
        ltDay.Text = newsdate;
    }       
}

但是当我单步执行publication_date时,只返回{0}作为字符串而不是日期。

我知道来源很好,好像我只是把模板上的日期显示在前端。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

它返回{0},因为它位于Literal的Text属性上。

您可以使用DataBinder.Evale.Item.DateItem读取数据源列。既然您知道要读取的列是什么,那么您可以直接从数据源获取DateTime对象,对于示例:

// get the dateTime from datasource
DateTime datePublication = DateTime.Parse(DataBinder.Eval(e.Item.DataItem, "DatePublicationColumn").ToString());

// show the day name
ltDay.Text = datePublication.ToString("dddd");

我添加DatePublicationColumn的位置,您可以指定列。