【发布时间】:2014-01-06 08:06:56
【问题描述】:
我有一个显示报告数据的自定义 Web 部件。它位于选项卡控件和更新面板中,因此刷新报告数据的回调是异步的。
在服务器上,我需要处理一些数据并发送回一个值以供以后使用。这个变量只需要坐在那里等待用户操作,然后客户端javascript将使用读取变量并根据变量的条件,这个javascript将以编程方式“单击”更新面板中的按钮。
页面上的更新面板和报告查看器
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnUnload="UpdatePanel_Unload">
<ContentTemplate>
<asp:Button ID="btnSendHiddenField" runat="server" style="visibility: hidden; display: none;" OnClick="btnSendHiddenField_Click"/>
<rsweb:ReportViewer ID="ReportViewer1" runat="server"
Font-Names="Verdana" Font-Size="8pt" Height="383px"
InteractiveDeviceInfos="(Collection)" ProcessingMode="Remote"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="757px"
SizeToReportContent="True">
</rsweb:ReportViewer>
<asp:HiddenField ID= "hiddenCurrentObjectId" runat="server"/>
</ContentTemplate>
</asp:UpdatePanel>
处理数据并发回变量的服务器代码。我忽略了不相关的代码。
Protected Sub btnSendHiddenField_Click(sender As Object, e As EventArgs) Handles btnSendHiddenField.Click
Dim parsedObjectId As String = ""
parsedObjectId = "1000"
hiddenCurrentObjectId.Value = parsedObjectId
End Sub
在面板的 OnUnload 代码中。必须在那里或那里才能使其他一些东西在 WebPart 中工作。我借用了这个 OnUnload 代码来解决之前的问题。
我的卸载功能
Protected Sub UpdatePanel_Unload(sender As Object, e As EventArgs)
Dim methodInfo As MethodInfo = GetType(ScriptManager).GetMethods(BindingFlags.NonPublic Or BindingFlags.Instance).Where(Function(i) i.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel")).First()
methodInfo.Invoke(ScriptManager.GetCurrent(Page), New Object() {TryCast(sender, UpdatePanel)})
End Sub
End Class
问题
隐藏字段的值在回程中被清除。我认为它在 OnUnload 函数调用中被清除了。
我的问题
我可以做些什么来保留这个隐藏的字段值,以便客户端javascript可以在另一个用户生成的事件发生时使用它?
【问题讨论】:
标签: javascript jquery asp.net updatepanel hidden-field