网格视图计算字段在行中



我正在使用链接到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 个日期之间的天数,不包括周末和节假日。 谢谢一百万帮助我弄清楚那个!

最新更新