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

时间:2015-03-05 20:59:07

标签: vb.net webforms user-controls

完全难以理解,一切看起来应该可以正常工作。当我尝试获取文本框的值时,它总是最终加载的是最初加载的值,而不是任何更新的值。请帮忙。

更新 创建了一个独立项目来重现问题。使用标准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和proc:

设置文本框的值
eMail.Text = myReader.Item("Email")

1 个答案:

答案 0 :(得分:0)

我改为使用

加载数据
 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

一切都在世界上正确!