【发布时间】:2018-01-23 13:51:03
【问题描述】:
我对编程和调整已经为我编写的一些代码还很陌生。我想检查 Gridview(named: playDate) 中的日期是否早于当前日期,如果是,则注册页面图标的可见性设置为 false。
但我得到了错误:
BC30311: Value of type 'System.Web.UI.Control' cannot be converted to 'Date'
错误似乎在这一行:
playDate = r.Cells(1).FindControl("playDate")
这是前端代码:
<asp:SqlDataSource ID="DSCompetitions" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" SelectCommand="SELECT TOP (100) PERCENT tblCompetitions.compID, tblCompetitions.compName, tblCompetitions.playDate, tblCompetitions.venue, tblCompetitions.entryPrice, tblCompetitions.rules, tblCompetitions.maxPlayers
FROM tblCompetitions
ORDER BY tblCompetitions.playDate DESC"></asp:SqlDataSource>
<asp:Gridview ID="gdvCompetitions" width="100%" runat="server" AllowPaging="True" AutoGenerateColumns="False" CssClass="mGrid" DataKeyNames="compID" DataSourceID="DSCompetitions" PageSize="20" AllowSorting="True">
<AlternatingRowStyle CssClass="alt" />
<Columns>
<asp:BoundField DataField="compName" HeaderText="Event" />
<asp:BoundField DataField="playDate" DataFormatString = "{0:dd/MM/yyyy}" HeaderText="Date" />
<asp:BoundField DataField="venue" HeaderText="Venue" />
<asp:BoundField DataField="entryPrice" HeaderText="Entry Fee £" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:HyperLink ID="hypView" runat="server" NavigateUrl='<%# "~/competition-view.aspx?compID=" & Eval("compID").ToString & "&round=1" %>'><asp:Image ID="ImgView" Width="30px" runat="server" ImageUrl="~/files/images/icons/view-icon.png" /></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:HyperLink ID="hypBook" runat="server" NavigateUrl='<%# "~/competition-book.aspx?compID=" & Eval("compID").ToString %>'><asp:Image ID="ImgRegister" Width="30px" runat="server" ImageUrl="~/files/images/icons/register-icon.png" /></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是我的 VB 代码:
For Each r As GridViewRow in gdvCompetitions.Rows
If r.RowType = DataControlRowType.DataRow Then 'Execute the code only for datarow, excluding footer and header
Dim playDate As Date
playDate = r.Cells(1).FindControl("playDate")
Dim hypBook As Hyperlink
hypBook = r.Cells(5).FindControl("hypBook")
If date.now > playDate Then
hypBook.visible=false
End If
End If
Next r
【问题讨论】:
-
您将
playDate定义为Date然后由playDate = r.Cells(1).FindControl("playDate")使用Control 启动它,这是不正确的。 -
改成
playDate = r.Cells(1).Text