2012-01-13 7 views
1

私は何をしようとしているbth_add領域で使用されるpage_loadからintGuestID1を取得しようとしている 私はそれをクリックしたときにIDを取得しようとしている別のフォームfrmAddFollowUpので、私は追加ボタンから要求するとき、それは以前のフォームからのIDの代わりに番号0を与えるようにpage_loadから要求しようとしました。どのように私は1つのサブから他のサブにオブジェクトを取得する

Partial Class frmAddFollowUp 
Inherits System.Web.UI.Page 
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Dim objCDBFeedback As New CDBFeedback 
    Dim objCDBDepartment As New CDBDepartment 

    Dim intGuestID1 As Integer 
    Dim arrList As New ArrayList 





    If Page.IsPostBack = False Then 
     intGuestID1 = Request.QueryString("id") 

     arrList = objCDBDepartment.getAllDepartmentDropDownList 
     lstDepartment.DataSource = arrList 
     lstDepartment.DataTextField = "DepartmentName" 
     lstDepartment.DataValueField = "Department" 
     lstDepartment.DataBind() 



    End If 

End Sub 

Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click 
    Dim CheckBoolean As Boolean = True 
    Dim objCDBFeedback As New CDBFeedback 
    Dim objCFeedback As New CFeedback 

    If txtStaffName.Text = "" Then 
     lblValidateStaffName.Text = "*Please enter Staff Name." 
     CheckBoolean = False 
    Else 

     lblValidateStaffName.Text = "" 
    End If 

    If txtFollowUpSummary.Text = "" Then 
     lblValidateFollowUpSummary.Text = "*Please enter Follow up summary." 
     CheckBoolean = False 
    ElseIf txtFollowUpSummary.Text.Contains("'") Then 
     txtFollowUpSummary.Text = txtFollowUpSummary.Text.Replace("'", "''") 
    Else 
     lblValidateFollowUpSummary.Text = "" 
    End If 

    If txtAmount2.Text = "" Then 
     lblValidateAmount2.Text = "*Please enter the Amount or put in NIL if there is no amount." 
     CheckBoolean = False 
    Else 
     lblValidateAmount2.Text = "" 
    End If 

    If CheckBoolean = False Then 

     If txtStaffName.Text.Contains("''") Then 
      txtStaffName.Text = txtStaffName.Text.Replace("''", "'") 
     End If 
     If txtFollowUpSummary.Text.Contains("''") Then 
      txtFollowUpSummary.Text = txtFollowUpSummary.Text.Replace("''", "'") 
     End If 

    Else 
     Dim intNumOfRecordsAffected As Integer 
     objCFeedback.GuestId = intGuestID1 
     objCFeedback.Feedback = txtFollowUpSummary.Text 
     objCFeedback.Department = lstDepartment.SelectedItem.Value 
     objCFeedback.StaffName = txtStaffName.Text 

     objCFeedback.Amount = txtAmount2.Text 

     intNumOfRecordsAffected = objCDBFeedback.addNewFollowUp(objCFeedback) 
     Response.Redirect("frmIncident.aspx") 
    End If 

End Sub 

答えて

0

あなたはByRefパラメータタイプを指定するか、オブジェクトの参照を返すFunctionを使用することができるいずれか。コードスニペットでは、変数をクラスレベル(フィールド)で宣言して、異なるイベントハンドラ/サブで使用できるようにすることができます。

0

intGuestID1をプライベートメンバー変数にします。これにより、両方の関数でこの変数にアクセスすることができます。

このコードはコンパイルされていますか?私はintGuestID1がbtnAdd_Clickで宣言されているのを見ていない、これはエラーを投げているはずです。

Partial Class frmAddFollowUp 
Inherits System.Web.UI.Page 

Private _intGuestID1 as Integer ' The _ prefix is just a naming convention that is used for class member variables, if you don't like it, you can remove it. 

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

あなたはもはや宣言する必要があるとして、今、あなたのPage_Loadメソッドでは、整数としてライン薄暗いintGuestID1を削除しません:プライベートメンバ変数は、例えば、Page_Loadの機能の上に以下を追加します宣言する

この。最後に、intGuestID1が表示されている場所で_intGuestID1に名前を変更します

さらに、これをリファクタリングするには、QueryStringから_intGuestID1を取得しているという事実をカプセル化する読み取り専用プロパティを作成する方法があります。次の例を参照してください。それは(場合、Request.QueryStringに格納されている実際の数であり、このような、それを使用する前に値の任意のチェックを実行することの利点の

Private ReadOnly Property GuestID1() as Int32 
Get 
    Return Request.QueryString("id") 
End Get 
End Property 

つの「ID」 )、またはこのIDで表されるエンティティへのアクセスを許可されているユーザ、またはあなたが考えることができるものです。これを行うときは、_intGuestID1への参照をすべてguestID1に変更する必要があります。

+0

プライベートメンバー変数にするにはどうすればよいですか?私はちょうどpage_loadでそれを宣言し、btnAdd_clickにそれを取ることができるかどうかを考えていたので、intGuestID1の宣言されていないintuestid1のために申し訳ありませんが、私はそれを取るコードを知らない – waterbottle

+0

不要申し訳ありませんが、私たちはすべてどこかで始まります。私に秒を与える、私はこれを行う方法について私の答えを更新する –

関連する問題