行中的Gridview计算字段

时间:2015-04-14 20:38:58

标签: sql asp.net vb.net gridview date-arithmetic

我正在使用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”),该值适用于其他网页。我不明白如何做一个计算字段!请帮忙或者你能指导我一个向我解释的教程。

2 个答案:

答案 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可能有些不对劲。感谢你的帮助! (仅供参考 - 我确实使用你的例子获得了另一个功能 - 只是没有这个新功能。如果你想查看代码,我会告诉你。它计算两个日期之间的天数,不包括周末和假期。谢谢百万帮我算出那一个!)