如果特定行的db值为0,如何禁用超链接?

时间:2013-06-04 15:02:35

标签: asp.net vb.net

我们在db上有很多记录。

有些值为零(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是整数数据类型。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

另外,If sid = "0"部分可能暗示它是一个字符串而不是一个数字,所以删除引号可能会修复它。

答案 1 :(得分: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