0

リピーターを使用してページネーションを行っており、現在のページの色を変更しようとしています。「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。コードの問題をデバッグできません。申し訳ありませんが、私は asp.net と vb の初心者でもあります。助けてください、事前に感謝します。

<div id="pages" class="pages-top">
    <asp:Repeater ID="rptPages" runat="server">
        <HeaderTemplate>
            <div>Page&nbsp</div>
        </HeaderTemplate>
        <ItemTemplate>
            <a >
                <asp:LinkButton ID="btnPage" runat="server"
                    CommandName="Page" CommandArgument="<%# Container.DataItem%>">
                    &nbsp<%# Container.DataItem%></asp:LinkButton>
            </a>
        </ItemTemplate>
    </asp:Repeater>
</div>

Public Property PageNumber() As Integer
    Get
        If ViewState("PageNumber") IsNot Nothing Then
            Return Convert.ToInt32(ViewState("PageNumber"))
        Else
            Return 0
        End If
    End Get
    Set(ByVal value As Integer)
        ViewState("PageNumber") = value
    End Set
End Property

 Public Sub LoadData()
    Dim pgitems As New PagedDataSource()
    Dim dv As New DataView(OutOfStockDt)

        ......

    pgitems.DataSource = dv
    pgitems.AllowPaging = True
    pgitems.PageSize = intPageItems
    pgitems.CurrentPageIndex = PageNumber

         .......

    rptPages.DataSource = pages
    rptPages.DataBind()

         ........

    rptOutOfStock.DataSource = pgitems
    rptOutOfStock.DataBind()

End Sub

Protected Sub rptPages_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles rptPages.ItemDataBound

    Dim lnkPage As LinkButton

    lnkPage = e.Item.FindControl("btnPage")
    --> im getting the error from the code below (if condition)
    **If lnkPage.CommandArgument.ToString = PageNumber.ToString** Then
        lnkPage.Enabled = False
        lnkPage.ForeColor = Drawing.Color.Black
    End If
End Sub
4

2 に答える 2

1

コントロールを見つける前に、最初に ListItemType を検証することでエラーを修正しました。私はWeb開発の初心者です。ここでの私の考えは、探しているコントロールの場所を明確に指摘していなかったので、null/nothing値が返された理由です。これが更新されたコードです。

If e.Item.ItemType = ListItemType.Item Then
    lnkPage = e.Item.FindControl("btnPage")
    If lnkPage.CommandArgument.ToString() = PageNumber.ToString() Then
       lnkPage.Enabled = False
       lnkPage.ForeColor = Drawing.Color.Black
    End If
End If
于 2014-05-09T15:42:32.787 に答える
0

これは、まだ null/Nothing である変数を使用しようとしたときに発生するエラーです。

への呼び出しがFindControl()失敗し、lnkPage変数がまだ null/Nothing であるか、または呼び出しが成功し、CommandArgumentプロパティが null/Nothing です。ここにブレークポイントを設定して、どのブレークポイントかを確認できます。

于 2014-05-08T16:56:07.367 に答える