<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}作为字符串而不是日期。
我知道来源很好,好像我只是把模板上的日期显示在前端。
任何想法我做错了什么?
答案 0 :(得分:1)
它返回{0}
,因为它位于Literal的Text
属性上。
您可以使用DataBinder.Eval
从e.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
的位置,您可以指定列。