Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 第行中的Gridview计算字段_Sql_Asp.net_Vb.net_Gridview_Date Arithmetic - Fatal编程技术网

Sql 第行中的Gridview计算字段

Sql 第行中的Gridview计算字段,sql,asp.net,vb.net,gridview,date-arithmetic,Sql,Asp.net,Vb.net,Gridview,Date Arithmetic,我正在使用Visual Studio 2010和Visual Basic链接到SQL数据库。我有一个Gridview,我想在其中有一个计算字段,我们称之为NoHoursOff,基于该行中的字段-BeginTimeOff和EndTimeOff 在做了一些研究之后,我知道我应该使用TemplateField。我只是不明白这是怎么回事。我尝试过,但没有成功: <asp:TemplateField HeaderText="Total Hours" > <ItemTemp

我正在使用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>

>

我也尝试过用“EndTimeOff.subtract”(“BeginTimeOff”)替换文本值,它可以在另一个网页上工作。我不懂如何计算字段!请帮助我,或者你能告诉我一个教程,可以向我解释这一点

您需要像这样在代码隐藏中创建一个函数

public string getValue(object BeginTimeOff, object EndTimeOff)
    {
        return (Convert.ToDateTime(EndTimeOff.ToString()) - Convert.ToDateTime(BeginTimeOff.ToString())).ToString();
    }
标签中

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>  

我尝试将C#转换为VB可能有问题。谢谢你的帮助!(仅供参考-我确实使用了您的示例使用了另一个函数,但不是这个新函数。如果您想查看代码,我将向您展示。它计算两个日期之间的天数,不包括周末和节假日。非常感谢您帮助我解出这个问题!)

谢谢!我正在使用Visual Basic。你能帮我转换代码吗?它在转换器中不工作。谢谢试试这个DateTime.Parse()或DateTime.ParseExact()中的任何一个,你会得到什么错误?你能编译没有错误的代码吗?我认为如果您尝试
Convert.ToDateTime(EndTimeOff.ToString())
而不是
DateTime.Parse(EndTimeOff.ToString())
它最终可以用于code-Return(Convert.ToDateTime(EndTimeOff.ToString())-Convert.ToDateTime(BeginTimeOff.ToString()),我得到的字符串没有被识别为有效的日期时间。在运行代码之前的错误中,我看到“类型为'System.TimeSpan'的值无法转换为'String'。”我将创建另一篇文章,因为我知道了我要做的部分工作。谢谢你的帮助!
Public Function getValue(BeginTimeOff As Object, EndTimeOff As Object) As String
            Return (DateTime.Parse(EndTimeOff.ToString()) - DateTime.Parse(BeginTimeOff.ToString())).ToString()
End Function