用户控件值未更新,无法检索
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
世界上一切都变得正确了!
完全被这个问题难倒了,一切看起来都应该可以正常工作。当我尝试获取文本框的值时,它总是以最初加载的值结束,而不是任何更新的值。请帮忙。
更新 创建了一个独立的项目来重现问题。使用标准 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
世界上一切都变得正确了!