2012-01-13 75 views
1

我想要做的是从page_load中获取intGuestID1以便在bth_add区域中使用 因为我试图从已点击的位置获取ID另一种形式frmAddFollowUp,所以我试图从page_load请求它,因为当我从添加按钮请求时,它只会给我数字0而不是以前的形式的ID。我如何获得从一个子对象到另一个子

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成为私有成员变量。这将允许你在这两个函数中访问这个变量。

此代码是否正在编译?我没有看到在btnAdd_Click中声明intGuestID1,这应该是抛出一个错误。

要声明一个私有成员变量添加上面的Page_Load函数如下,例如:现在

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为整数,因为你不再需要声明这个。最后,在任何你看到intGuestID1的地方,将它重命名为_intGuestID1

此外,一些可能重构此方法的方法是创建一个只读属性,它封装了从QueryString获取_intGuestID1的事实。请看下面的例子:

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

其中一个这样做是使用它,如之前执行的值的任何检查的好处,是它存储在的Request.QueryString(实数“ID” ),还是允许用户访问由此ID代表的实体,或者您可以想到的任何其他内容。当你这样做时,你需要将所有对_intGuestID1的引用改为GuestID1。

+0

我如何让它成为私人成员变量?对不起,在这个新的..至于intGuestID1不在btnAdd_click中声明..因为我在想我是否可以在page_load中声明它,并将其带入到btnAdd_click,但我不知道代码采取 – waterbottle 2012-01-13 03:38:29

+0

没有需要对不起,我们都从某个地方开始。给我一下,我会更新我的答案,如何做到这一点 – 2012-01-13 03:41:08

相关问题