我正在使用链接到SQL数据库的Visual Studio 2010和Visual Basic。 我有一个 Gridview,我想在其中有一个计算字段,我们根据该行中的字段将其称为 NoHoursOff(BeginTimeOff) 和 EndTimeOff。
在做了一些研究之后,我了解到我应该使用TemplateField。 我只是不明白这是如何工作的。 我尝试过但没有成功:
<asp:TemplateField HeaderText="Total Hours" >
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# "EndTimeOff" - "BeginTimeOff" %>' Width="100px"></asp:Label>>
</ItemTemplate>
</asp:TemplateField>
我也尝试将文本值替换为"EndTimeOff".subtract("BeginTimeOff"),它适用于另一个网页。 我不明白如何做一个计算字段! 请帮忙,或者你能指导我到一个教程来向我解释这一点。
你需要像这样在代码隐藏中创建一个函数
public string getValue(object BeginTimeOff, object EndTimeOff)
{
return (Convert.ToDateTime(EndTimeOff.ToString()) - Convert.ToDateTime(BeginTimeOff.ToString())).ToString();
}
在Label
Text=<%# getValue(Eval("BeginTimeOff"), Eval("EndTimeOff")) %>
然后只需设置要在方法中显示的格式(n天,hh.mm.ss 等)即可满足您的要求
根据您的建议,我无法让它工作。 这是我的aspx和vb代码:
<asp:TemplateField HeaderText="TotalHours2" >
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# getValue(Eval("BeginTimeOff"), Eval("EndTimeOff")) %>' Width="100px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
和
Public Function getValue(BeginTimeOff As Object, EndTimeOff As Object) As String
Return (DateTime.Parse(EndTimeOff.ToString()) - DateTime.Parse(BeginTimeOff.ToString())).ToString()
End Function
我尝试将 C# 转换为 VB 可能是有问题。 感谢您的帮助! (仅供参考 - 我确实使用您的示例获得了另一个函数 - 只是不是这个新功能。 如果你想看代码,我会给你看。 它计算 2 个日期之间的天数,不包括周末和节假日。 谢谢一百万帮助我弄清楚那个!