Как я могу изменить значение, прежде чем оно будет отображено в повторителе с привязкой к данным? - PullRequest
0 голосов
/ 18 ноября 2011

Я привязываю данные повторителя к какому-нибудь тексту и дате и времени (Отвечать).

<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 часа) в поле «Ответить по дате» перед его отображением для пользователей.

   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 голосов
/ 18 ноября 2011

Вы можете либо изменить <%#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");
}
0 голосов
/ 18 ноября 2011

Вы можете сделать следующее в файле aspx.

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

Или добавить метку / литерал в aspx вместо <%#Eval("RespondBy")%> и использовать его в ItemDataBound

...