lunedì 2 novembre 2009

Translator English Italian

ASP.net: visualizzare la differenza di due date su un datagrid


A volte può essere necessario visualizzare su una colonna di un gridview la differenza fra due date. Quella che vi presento è una soluzione veloce ed elegante.

Bisogna bindare la colonna utilizza do una funzione di formattazione che andremo a definire noi.

<asp:GridView ID="GridViewReports" CssClass ="Table" runat ="server" AutoGenerateColumns="False">
<Columns>
...
<asp:TemplateField HeaderText="Tempo (h:min)">
<ItemTemplate>
<asp:Label ID="lblEndDate" runat="server"
Text='<%# Utility.FormatDateDiff(DataBinder.Eval(Container.DataItem, "CreateDate"), DataBinder.Eval(Container.DataItem, "EndDate")) %>'
style="font-weight:bold;font-size:9px;"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
</asp:GridView>


Nell'esempio, il metodo FormatDateDiff è definito nella classe utility e ad esso vengono passate le due date di cui bisogna calcolare la differenza. Le due date in questo caso sono due campi del dataset bindato al gridview. FormatDateDiff non fà altro che calcolare la differenza, formattandolo nel formato prescelto e restituendo una stringa.

//Convert the interval time between the two date in the format HH:MM
public static String FormatDateDiff(Object start, Object end)
{
if (start == DBNull.Value)
{
return "";
}
else
{
DateTime startDate = (DateTime)start;
DateTime endDate = DateTime.Now;
if (end != DBNull.Value)
endDate = (DateTime)end;
TimeSpan span = endDate.Subtract(startDate);
return string.Format("{0:00}:{1:00}", span.TotalHours, span.Minutes);

}
}

Nessun commento:

Posta un commento