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 の宣言されたデータ型が DB での方法と一致していることを確認してください。文字列を変換するか、データ型を 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 に答える