我们在数据库上有一堆记录。
有些具有零 (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/