Comment afficher Durée seulement Heures: Minutes: Deuxième Gridview Asp.Net en utilisant LINQ to SQL?
-
22-08-2019 - |
Question
Je veux afficher la durée seulement Heures, minutes, et en second Gridview de données par Soustraire TimeCheckOut de TimeCheckIn dans ASP.NET à l'aide LINQ to SQL
Voici le code derrière:
Dim db = new MyDataContext
Dim user = from u in db.Employees select IDNumber = u.IDNumber, _
FirstName = u.firstName, LastName = u.lastName, TimeCheckIn = u.timeCheckIn, _
TimeCheckOut = u.timeCheckOut, Duration = u.timeCheckIn
Gridview1.DataSource = user
Gridview1.DataBind()
Code de la page:
<asp:GridView ID="GridView1" runat="server" Width="100%"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="IDNumber" HeaderText="ID Number" ReadOnly="True" />
<asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True"/>
<asp:BoundField DataField="LastName" HeaderText="Last Name" ReadOnly="True"/>
<asp:BoundField DataField="TimeCheckIn" HeaderText="Time Check In" ReadOnly="True"/>
<asp:BoundField DataField="TimeCheckOut" HeaderText="Time Check Out" ReadOnly="True" />
<asp:TemplateField HeaderText="Duration">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# FieldDisplayDuration(Eval("Duration")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Voici mon aide pour FieldDisplayDuration:
Protected Function FieldDisplayDuration(ByVal Duration As DateTime) As String
Dim rtn As String = "DefaultValue"
Dim dif As TimeSpan = DateTime.Now.Subtract(Duration)
rtn = dif.Hours & " hours, " & dif.Minutes & " minutes, " & dif.Seconds & " seconds. "
Return rtn
End Function
En ligne 3 en fonction d'assistance, comme cultés Dim TimeSpan = DateTime.Now.Subtract (Durée) qui donnent seulement la durée des heures, minutes et deuxième de TimeCheckIn jusqu'à DateTime.Now. Cependant, je veux avoir la durée de TimeCheckIn jusqu'à TimeCheckOut seulement en heure, minute et seconde. Je sais que la fonction FieldDisplayDuration est logique tout à fait tort, mais je veux juste vous mon point seulement, et aussi il pourrait être l'exemple de code pour ceux qui veulent calculer la durée de l'employé de la date d'embauche. Enfin, Revenons à TimeSpan par Soustraire TimeCheckOut de TimeCheckIn dans le problème gridview, Comment puis-je faire cela? S'il vous plaît me donner quelques indices .. Merci tellement vous ...
La solution
Il est possible de soustraire juste la date et l'heure pour obtenir le Timespan donc vous devriez être en mesure d'utiliser
Text='<%# FieldDisplayDuration(Eval("TimeCheckIn"), Eval("TimeCheckOut")) %>'
et quelque chose comme cette fonction:
Protected Function FieldDisplayDuration(ByVal CheckIn As DateTime, ByVal CheckOut as DateTime) As String
Dim rtn As String = "DefaultValue"
Dim dif As TimeSpan = CheckOut - CheckIn
rtn = dif.Hours & " hours, " & dif.Minutes & " minutes, " & dif.Seconds & " seconds. "
Return rtnEnd
Function
Bien que je serais probablement utiliser un format de chaîne sur la ligne Rturn et faire ...
rtn = string.Format("{0} hours, {1} minutes, {2} seconds.", dif.Hours, dif.Minutes, difSeconds)
Je pense qu'il est plus facile à lire.
Autres conseils
Vous pouvez mettre la logique pour calculer le droit de durée dans votre clause Select, comme suit:
Dim user = from u in db.Employees select IDNumber = u.IDNumber, _
FirstName = u.firstName, LastName = u.lastName, TimeCheckIn = u.timeCheckIn, _
TimeCheckOut = u.timeCheckOut, Duration = u.timeCheckOut.Subtract(u.timeCheckIn)
, il vous suffit ensuite de formater la Timespan résultant.
Sinon, vous pouvez tout faire dans la sélection, ou même appeler une fonction, donc quelque chose comme
Duration = FormatDuration(u.timeCheckOut.Subtract(u.timeCheckIn)
ou
Duration = FormatDuration(u.timeCheckIn, u.timeCheckOut)\
Si vous avez fait cela, et en supposant FormatDuration retourné une chaîne, vous seriez en mesure de faire disparaître le modèle de colonne entièrement