0

すべてで関数を呼び出すMe.Loadと問題ありませんが、ボタンクリックイベントでのみ関数をトリガーすると、内部のすべての変数が設定値を失います。VB.NET を使い始めたばかりなので、ここでスコープの性質を完全には理解していません。

これが私のコードです:

Public Class WorkflowForward
    Inherits FileBound.Web.FBBasePage

    ' Private decalrations
    Private cfile_id As String = ""                             ' Current files ID
    Private FBProject As Project = Nothing                      ' FileBound Project object
    Private cmd As String = ""                                  ' SQL query string
    Private FBFile As FileBound.File = Nothing                  ' Filebound file holder
    Private FBRoutes As RouteCollection = Nothing               ' FileBound route collection holder


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ' Set SqlDataSource connection string
        FBSqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("FB_0371tcc").ConnectionString

        If Not Me.IsPostBack Then
            ' Set values to variables
            Page_setup() ' Here I set values to variabels
            setRoute_debug("Admin1 Test")

        End If


    End Sub

    Protected Sub sendEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sendEmail.Click
        ' CAN I HAZ SOME TEST????
        'setRoute_debug(emailTo.SelectedValue.ToString)

        Response.Write("<script>" & Me.FBRoutes.TotalCount.ToString & "</script>")

    End Sub

    Private Sub setRoute_debug(ByVal route_to As String)

        ' IF WE HAZ SOME ITEMS FINISH THEM MUHUHAHHAHAHA
        If FBBusiness.LoggedInUser.RoutedItems.TotalCount > 0 Then
            For Each item As RoutedItem In FBBusiness.LoggedInUser.RoutedItems
                item.Complete("Completed!")
            Next
        End If




        ' DEBUG MODE #YOLO
        ' I'VE DONE IT I CAN HAZ ROUTEZ
        For Each r As Route In Me.FBRoutes
            If r.Name = route_to Then
                For Each doc As FileBound.Document In FBFile.Documents
                    doc.Route(r.ID)
                Next

            End If
        Next


    End Sub

    Private Sub Page_setup()
    ' Some code that sets values
    End Sub
End Class

ボタンをクリックすると、次のエラーがスローされます。

Object reference not set to an instance of an object. 
Line 46:         Response.Write("<script>" & Me.FBRoutes.TotalCount.ToString & "</script>")
4

1 に答える 1

1

asp.netページとしてボタンをクリックすると、PostBack.

でのみページを設定しています

If Not Me.IsPostBack

これは、asp.net コントロールでは問題ありませんViewState。.

ボタンをクリックすると、サーバーは新しいリクエストを受け取り、Page の新しいオブジェクトが作成されます。このオブジェクトに変数が設定されていません。

このように、PostBack ごとにページ レベルの変数を設定します。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    ' Set SqlDataSource connection string
    FBSqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("FB_0371tcc").ConnectionString

    Page_setup() ' Here I set values to variables

    If Not Me.IsPostBack Then
        'Set Page level control values like TextBox values
    End If
End Sub
于 2013-01-22T03:54:12.280 に答える