减去转发器中的值

时间:2012-01-18 08:23:11

标签: repeater

如何在转发器中减去2个日期时间? 我想减去2个requestDates并写入waitingTime。

       <td>
        <%#Eval("requestDates")%>
        </td>
        <td>
        <%#Eval("waitingTime")%>
        </td>

         I wanna get like 1 week 4 days 18 hours 47 minutes:>

        ID         Request_Dates                     Waiting_Time
        1      18.01.2012 09:54:38          6 days 20 hours 37 mins 13 sec
        2      11.01.2012 13:17:25                 19 hours 18 mins 47 sec
       ...            ....                                 ....

因为你看到等待时间=(id 1 request_dates) - (id 2 request_dates) 谢谢。

1 个答案:

答案 0 :(得分:1)

一个解决方案

您可以通过以下方式创建方法并在html代码中调用它:

 <td>
        <%# substraction(Eval("requestDates"),Eval("waitingTime"))%>
        </td>

在cs中:

public function substraction(....){}

只考虑你必须在html和cs中转换变量。

另一种解决方案 我会用文字替换Eval,添加一个ItemDataBound事件,在方法中我会找到控件并分配值,在这里我可以从“e.Item”对象中获取值并轻松地减去它。 例如:

<asp:Repeater ID="rp" runat="server" OnItemDataBound="Item_Bound">
.....
</asp:Repeater>

 void Item_Bound(Object sender, DataListItemEventArgs e)
      {

         MyObject theobject=(MyObject) e.Item.DataItem;
         if (e.Item.ItemType == ListItemType.Item || 
             e.Item.ItemType == ListItemType.AlternatingItem)
         {

            // Retrieve the Label control in the current DataListItem.
            Label ltRequest = (Label)e.Item.FindControl("ltRequest");
          ltRequest.text=theobject.requestDates;
        ....
        /**HERE I CAN DO WHATEVER***/
     }
}