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

This is the error you get when you try to use a variable that is still null/Nothing.

Either the call to FindControl() failed, and the lnkPage variable is still null/Nothing, or it succeeds and the CommandArgument property is null/Nothing. You can set a breakpoint here to see which one.

于 2014-05-08T16:56:07.367 回答