行中的 Gridview 计算字段
Posted
技术标签:
【中文标题】行中的 Gridview 计算字段【英文标题】:Gridview Calculated Field in Row 【发布时间】:2015-04-14 20:38:58 【问题描述】:我正在使用链接到 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") 替换 Text 值,这适用于另一个网页。我不明白如何做一个计算字段!请帮忙,或者你能指导我到一个可以向我解释这个的教程。
【问题讨论】:
【参考方案1】:你需要像这样在代码隐藏中创建一个函数
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 等)以满足您的要求
【讨论】:
谢谢!我正在使用 Visual Basic。你能帮我转换一下代码吗?它在转换器中不起作用。谢谢! 尝试任何一个 DateTime.Parse() 或 DateTime.ParseExact()根据您的建议,我无法使其正常工作。这是我的 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 可能有问题。感谢你的帮助! (仅供参考-我确实使用您的示例获得了另一个功能-只是不是这个新功能。如果您想查看代码,我会向您展示。它计算两个日期之间的天数,不包括周末和节假日。谢谢百万帮助我解决了这个问题!)
【讨论】:
你得到的错误是什么?你能编译代码没有错误吗?我认为,如果您尝试使用Convert.ToDateTime(EndTimeOff.ToString())
而不是 DateTime.Parse(EndTimeOff.ToString())
它最终可以工作
对于代码 - 返回 (Convert.ToDateTime(EndTimeOff.ToString()) - Convert.ToDateTime(BeginTimeOff.ToString())),我得到的字符串未被识别为有效的 DateTime。在我运行代码之前的错误中,我看到“'System.TimeSpan' 类型的值无法转换为 'String'。”
我要创建另一个帖子,因为我想出了我想做的一部分。感谢您的帮助!以上是关于行中的 Gridview 计算字段的主要内容,如果未能解决你的问题,请参考以下文章
如何从 aspx 中的 Gridview 行中检索主键以在 userControl.ascx 中使用?