我花了几天时间研究我的问题,但无法让它正常工作。我知道这里有一些与此问题相关的主题,阅读它们对我有所帮助,但我遇到了一些障碍,希望能朝着正确的方向前进。
我编写了一个小型 .NET 3.5 VB.NET Web 应用程序,允许用户维护一些数据。它由 3 页组成。我不完全喜欢的一个要求是,用户希望进行所有更改,然后在最后单击保存按钮,而不是每次将更改应用到网格时都保存回数据库。
我正在使用会话对象在每个页面上存储对象集合,并希望在用户尝试更改下拉列表的值或在有待处理操作时离开页面时通过对话框提示用户。经过这里和其他地方的大量研究,我决定在页面上创建一个隐藏字段,并在每次在服务器端更新动作集合时更新其值。然后我想评估该值,如果它大于 0,我想提示用户保存更改。
我的功能:
<telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
<script type="text/javascript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
var actionCount = $get('<%=ActionCounterField.ClientID %>').value;
if (actionCount > 0) {
alert("Pending Changes!");
}
}
</script>
</telerik:RadCodeBlock>
我的隐藏字段声明:
<asp:HiddenField id="ActionCounterField" runat="server" />
我的服务器端代码:
Protected Sub UpdateActionCount()
ActionCounterField.Value = GoalCategoryActionList.Count
End Sub
当我调试应用程序并将记录添加到我的网格时,服务器端代码会正确执行。我还验证了隐藏控件是由 javascript 函数找到的。但是,我无法弄清楚为什么函数找不到隐藏字段值。
任何帮助是极大的赞赏。谢谢!