用户控件值未更新,无法检索

User Control value not updating, unable to retrieve

完全被这个问题难倒了,一切看起来都应该可以正常工作。当我尝试获取文本框的值时,它总是以最初加载的值结束,而不是任何更新的值。请帮忙。

更新 创建了一个独立的项目来重现问题。使用标准 Page_Load 加载数据并按应有的方式工作。但是,该项目使用

Protected Overrides Sub OnLoad(ByVal e As EventArgs)

当我改用这种方式加载数据时,它失败了。不太确定我的选择是什么,如果可以的话请提供帮助。

WorkOrder.aspx:

(页面上也有一个 DevEx 网格,但我在那里找不到相关性。两个控件都在 asp:Content 标签的根目录中)

<uc:WebUserControl ID="WebUserControl1" runat="server" />
 <asp:LinkButton ID="UpdateRecord" runat="server">Update</asp:LinkButton>

WorkOrder.aspx.vb:

    Protected Sub UpdateRecord_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdateRecord.Click
     Dim x As String = WebUserControl1.EmailValue
    End Sub

UserControl1.ascx:

 <asp:TextBox ID="eMail" runat="server" CssClass="ContractTextEntry"
     Text="" MaxLength="125" Width="140px"></asp:TextBox>

UserControl1.ascx.vb:

    Public Property EmailValue As String
    Get
        Return eMail.Text
    End Get
    Set(value As String)
        eMail.Text = value
    End Set
    End Property

文本框的值使用简单的 ADO 和过程设置:

eMail.Text = myReader.Item("Email")

我改为使用

加载数据
 Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)

这对加载数据不起作用,但一位同事建议添加 HANDLES

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender

世界上一切都变得正确了!