如何在数据绑定中继器中显示之前修改值?

时间:2011-11-18 15:48:28

标签: c# asp.net datagridview repeater rowdatabound

我正在将转发器的一些文本和日期时间(响应者)数据绑定。

<asp:Repeater ID="rptList" OnItemDataBound="repeaterDatabound" runat="server">
     <HeaderTemplate>
     </HeaderTemplate>
     <ItemTemplate>
         <tr>
              <td>
                  <b>Respond By</b>
              </td>
              <td>
                  <%#Eval("RespondBy")%>
              </td>
          </tr>

我想在屏幕上显示数据时间之前更改数据时间,我想做一个与下面类似的rowdatabound。我怎样才能为转发器做到这一点。或者在向用户显示之前,是否还有另一种方法可以将值(3小时)添加到由dateTime响应。

   protected void repeaterDatabound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DateTime.TryParse(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "RespondBy")), out Respond);
        }
    }

我无法在客户端添加3小时,我必须为每个用户添加的时间不同,

2 个答案:

答案 0 :(得分:0)

您可以在aspx文件中执行以下操作。

 ((DateTime)Eval("RespondBy")).AddHours(3)

或者在aspx中添加标签/文字而不是<%#Eval("RespondBy")%>并在ItemDataBound中使用它

答案 1 :(得分:0)

您可以将<%#Eval("RespondBy)%>更改为某个服务器控件,例如<asp:Literal>,然后在ItemDataBound方法中更新此值。

或者你可以使用一些内联代码

<%#((DateTime) Eval("RespondBy")).AddHours(3).ToString("dd MMMM yyyy")%>

或者您可以生成一个公共函数,然后可以在将来重用。

public static string RespondByDate(DateTime theDate){
    return theDate.AddHours(3).ToString("dd MMMM yyyy");
}