使用了不存在或者没有实例化的东东

解决方案 »

  1.   

    全部代码如下,请各位前辈看看是怎么回事?
    Imports System.Data
    Imports System.Data.SqlClient
    Public Class search
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Protected WithEvents DLSearch As System.Web.UI.WebControls.DataList
        Protected WithEvents Label1 As System.Web.UI.WebControls.Label
        Protected WithEvents lbFirst As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lbPrev As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lbNext As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lbLast As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lPagecount As System.Web.UI.WebControls.Label
        Protected WithEvents lRowscount As System.Web.UI.WebControls.Label
        Protected WithEvents lCurrentpage As System.Web.UI.WebControls.Label    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region
        Dim daobj As New dataaccessobj
        '定义主题记录的总数
        Dim rowscount As Integer
        '定义一共显示的页数
        Dim pagecount As Integer
        '定义当前的页号
        Dim currentpage As Integer
        '定义每一页显示多少行
        Const rowsperpage As Integer = 1
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
        If IsPostBack = False Then
                '绑定数据
                mybinddata()
                calrowscount()
            End If
            '不分页显示
            'displayall()
            '分页显示
            displaypart()
        End Sub    Sub mybinddata()
            '绑定搜索结果
            daobj.pconstr = "server=localhost;uid=sa;pwd=password;database=corp"
            If Request.QueryString("sby") = "" Then
                Label1.Text += "请填写搜索的依据"
            Else
                If Request.QueryString("sby") = "按产品名称搜索" Then
                    daobj.psqlstr = "select * from viewcorpprs where pname like '%" & Request.QueryString("skey") & "%'"
                End If
                If Request.QueryString("sby") = "按厂商搜索" Then
                    daobj.psqlstr = "select * from viewcorpprs where sname like '%" & Request.QueryString("skey") & "%'"
                End If
            End If
        End Sub    Sub displayall()
            '不分页显示
            '指定数据源
            DLSearched.DataSource = daobj.displaydata()
            '绑定数据源
            DLSearched.DataBind()
        End Sub    Sub displaypart()
            '分页显示
            '绑定当前页的记录
            If currentpage <> 0 Then
                bindcurrentpage(currentpage, rowsperpage)
                If currentpage = 1 Then
                    lbFirst.Enabled = False
                    lbPrev.Enabled = False
                Else
                    lbFirst.Enabled = True
                    lbPrev.Enabled = True
                End If
                If currentpage = pagecount Then
                    lbNext.Enabled = False
                    lbLast.Enabled = False
                Else
                    lbNext.Enabled = True
                    lbLast.Enabled = True
                End If
            Else
                lbFirst.Enabled = False
                lbPrev.Enabled = False
                lbNext.Enabled = False
                lbLast.Enabled = False
            End If
        End Sub    Sub calrowscount()
            '首先计算记录总的行数
            rowscount = daobj.displaydata().Count
            '然后计算要显示的总的页数
            If rowscount = 0 Then
                currentpage = 0
                Label1.Text = "无记录"
            Else
                currentpage = 1
                Label1.Text = "有记录"
                If rowscount Mod rowsperpage > 0 Then
                    pagecount = rowscount \ rowsperpage + 1
                Else
                    pagecount = rowscount \ rowsperpage
                End If
            End If
            '显示出总的页数
            lPagecount.Enabled = True
            lCurrentpage.Enabled = True        lPagecount.Text = "共" & pagecount.ToString() & "页"
            lRowscount.Text = "共" & rowscount.ToString() & "条记录"
            lCurrentpage.Text = "第" & currentpage.ToString() & "页"
        End Sub    Sub bindcurrentpage(ByVal currentpageno As Integer, ByVal rowscountperpage As Integer)
            daobj.pcurrentpageno = currentpageno
            daobj.prowscountperpage = rowscountperpage
            '指定数据源
            DLSearched.DataSource = daobj.displaypartdata
            '绑定数据源
            DLSearched.DataBind()
        End Sub    Sub goto_click(ByVal sender As Object, ByVal e As CommandEventArgs)
            Dim pagecountnum, currentpageno As Integer
            pagecountnum = Convert.ToInt32(getno("pagecount"))
            currentpageno = Convert.ToInt32(getno("currentpage"))        Dim commandtxt As String
            commandtxt = e.CommandName
            Select Case commandtxt
                Case "First"
                    currentpage = 1
                Case "Next"
                    currentpage = Math.Min(pagecountnum, currentpageno + 1)
                Case "Prev"
                    currentpage = Math.Max(1, currentpageno - 1)
                Case "Last"
                    currentpage = pagecountnum
            End Select
            If currentpage = 1 Then
                lbFirst.Enabled = False
                lbPrev.Enabled = False
            Else
                lbFirst.Enabled = True
                lbPrev.Enabled = True
            End If
            If currentpage = pagecountnum Then
                lbNext.Enabled = False
                lbLast.Enabled = False
            Else
                lbNext.Enabled = True
                lbLast.Enabled = True
            End If
            '读取新页中的记录
            mybinddata()
            bindcurrentpage(currentpage, rowsperpage)
            '记录并显示新页号
            lCurrentpage.Text = "第" & currentpage.ToString() & "页"
        End Sub    Function getno(ByVal labelname As String) As String
            Dim str As String
            Dim no As Integer
            If labelname = "pagecount" Then
                str = lPagecount.Text
                str = str.Trim("共", "页")
            End If
            If labelname = "currentpage" Then
                str = lCurrentpage.Text
                str = str.Trim("第", "页")
            End If
            If labelname = "rowscount" Then
                str = lRowscount.Text
                str = str.Trim("共", "条", "记", "录")
            End If
            Return str
        End FunctionEnd Class
      

  2.   

    调试,跟踪看一下那里有问题