0

リピーターにいくつかのテキストと日時(応答者)をデータバインディングしています。

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

ここでは、画面に表示する前にデータ時間を変更したいのですが、rowdatabound以下のようなことをしたいと思います。どうすればリピーターのためにそれを行うことができますか。または、ユーザーに表示する前に、dateTimeで応答するためにvalue(3Hrs)を追加する他の方法はありますか。

   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時間を追加することはできません。追加する必要のある時間数は、ユーザーごとに異なります。

4

2 に答える 2

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");
}
于 2011-11-18T15:59:59.597 に答える
0

aspx ファイルで次のいずれかを実行できます。

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

または、代わりにaspxにラベル/リテラル​​を追加し<%#Eval("RespondBy")%>て、ItemDataBoundで使用します

于 2011-11-18T15:54:55.560 に答える