3

我们在数据库上有一堆记录。

有些具有零 (0) 值。

然后在标记上,我们有以下链接:

<asp:HyperLink ID="hypG773" runat="server" Text="Get It" navigateurl='<%# String.Format("gets.aspx") %>' Target="_blank" />

如果特定记录的值为 0,我们想禁用上面的超链接。

下面的代码:

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim sid As Integer
        Dim dr As DataRowView = TryCast(e.Item.DataItem, DataRowView)
        sid = dr("sid")

        If sid = "0" Then
            Dim lnkbtn As HyperLink = DirectCast(e.Item.FindControl("hypG773"), HyperLink)
            lnkbtn.Enabled = False
        End If
    End If
End Sub

给我以下错误:

输入字符串的格式不正确。

错误指向下面的这一行:

第 38 行:sid = dr("sid")

我认为这与数据类型有关。

Sid 是整数数据类型。

谢谢你的帮助

4

2 回答 2

0

我对如何在 .NET 中表示数据类型有点模糊,但请确保声明的 Integer 数据类型与它在数据库中的方式一致。您可能必须转换字符串,或将数据类型更改为 Long。

此外,该If sid = "0"部分可能暗示它是一个字符串而不是数字,因此删除引号可能会解决它。

于 2013-06-04T15:09:04.217 回答
0

如果你这样做,你可以避免做代码隐藏的东西:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>' Text='<%# Eval("Url") %>' Enabled='<%# Eval("Enabled") %>'>HyperLink</asp:HyperLink>

示例类:

Public Class MyLinks
    Public Property Url As String
    Public Property Enabled As Integer
End Class

并像这样绑定我DataList

Dim myLinksList As New List(Of MyLinks)
myLinksList.Add(New MyLinks With {.Enabled = 1, .Url = "http://www.google.com"})
myLinksList.Add(New MyLinks With {.Enabled = 0, .Url = "http://www.google.com"})
myLinksList.Add(New MyLinks With {.Enabled = 1, .Url = "http://www.google.com"})
myLinksList.Add(New MyLinks With {.Enabled = 1, .Url = "http://www.google.com"})
myLinksList.Add(New MyLinks With {.Enabled = 0, .Url = "http://www.google.com"})

Me.DataList1.DataSource = myLinksList
Me.DataList1.DataBind()

当您将 sid 字段绑定到Enabled属性时,它应该可以工作。

Enabled='<%# Eval("sid") %>'

编辑


您还可以执行以下操作(作为不同解决方案的一部分):

<asp:HyperLink ID="hypG773" runat="server" Text="Get It" navigateurl='<%# String.Format("gets.aspx") %>' Enabled='<%# getEnabled(Eval("sid")) %>' Target="_blank" />

然后在您的代码隐藏中:

Public Function getEnabled(ByVal sid As Object) As Boolean
    Return Convert.ToInt32(sid)
End Function
于 2013-06-04T15:15:05.167 回答