我正在使用Visual Studio 2010和Visual Basic链接到SQL数据库。我有一个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>
我也尝试将Text值替换为“EndTimeOff”.subtract(“BeginTimeOff”),该值适用于其他网页。我不明白如何做一个计算字段!请帮忙或者你能指导我一个向我解释的教程。
答案 0 :(得分:0)
你需要在代码隐藏中创建一个像这个
的函数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等)以满足您的要求
答案 1 :(得分:0)
根据你的建议,我无法让它发挥作用。这是我的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>
AND
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可能有些不对劲。感谢你的帮助! (仅供参考 - 我确实使用你的例子获得了另一个功能 - 只是没有这个新功能。如果你想查看代码,我会告诉你。它计算两个日期之间的天数,不包括周末和假期。谢谢百万帮我算出那一个!)