我们在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是整数数据类型。
感谢您的帮助
答案 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