从中继器解析值
本文关键字:中继器 | 更新日期: 2023-09-27 17:53:57
<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}
,因为它位于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
时,您指定列。