asp.net - 当特定行的 db 值为 0 时,如何禁用超链接?

标签 asp.net vb.net

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

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

谢谢你的帮助

最佳答案

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

<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

并像这样绑定(bind)我的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 字段绑定(bind)到 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

关于asp.net - 当特定行的 db 值为 0 时,如何禁用超链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921208/

相关文章:

asp.net - 我应该如何处理这些 RAM?

vb.net - 如何使用 vb.net 获取子字符串日期(年份)?

.net - Microsoft.VisualBasic 命名空间是 "true .NET"代码吗?

asp.net - 用户控制大写字母

.net - 审计日志方法的提示

c# - 防止桌面应用程序上的多个相同用户登录

c# - 将VB代码转换为C#

vb.net - 如何播放嵌入在资源中的音频文件?

javascript - ID、唯一 ID、客户端 ID、唯一客户端 ID、静态客户端 ID?

ASP.NET "access is denied"访问 UNC 路径时出错