我有一个用户控件,正在页面中调用。 伪代码如下 主页
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@ Register TagPrefix="test" TagName="newcontrol" Src="~/UserControl.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<script id="testscript" language="javascript" src="CheckJavaScript.js"> </script>
<form id="form1" runat="server">
<div>
<test:newcontrol ID="testingNewControl" runat="server" />
<asp:Button ID="btnSave" runat="server" Width="100" OnClientClick="CallingScript()" />
</div>
</form>
</body>
</html>
用户控制
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl.ascx.cs"
Inherits="WebApplication1.UserControl" %>
<div id="usertest" runat="server">
<table>
<tr>
<td>
<asp:Label ID="label1" Text="Name" runat="server">
</asp:Label>
<asp:TextBox ID="text1" runat="server"></asp:TextBox>
</td>
</tr>
</table>
<table>
<tr>
<td>
<asp:Label ID="label2" Text="City" runat="server">
</asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</div>
当用户点击“保存”按钮时,如果文本框的值发生任何变化,我想调用 JavaScript。
如何识别文本框值是否已更改。 此外,我在用户控件中只显示了两个文本框,而实际上会有很多文本框。 我必须将警报显示为“textbox1 中的值已更改”或“textbox2 中的值已更改”
我该如何继续。
请您参考如下方法:
对于通用解决方案,您需要一个跟踪旧值的解决方案。解决方案的典型概要是
- 有一个隐藏字段来存储要跟踪的控件的旧值。您需要开发一些方案来序列化/反序列化名称/ID-值对。它可以像冒号分隔的名称/值对的逗号分隔列表一样简单。不过,您可以考虑 JSON。
- 在服务器端有一个代码,对于给定的父控件,递归地循环所有子控件并将其原始值(以及名称/ID)存储到隐藏字段中。出于性能原因,您可以接受要保存的控件类型(或者让您的逻辑根据控件的类型跳过控件)。
- # 2 仅需要在显示页面时完成,即它应该在回发中发生。但是,当然,您可能会遇到这样的情况:切换面板的可见性,然后您想要跟踪面板中的控件。因此,为了处理这种情况,您实际上需要创建一个名称/值对的字典,以便在页面生命周期中存储控件。您可以注册用于跟踪的控件,也可以从跟踪中取消注册它们。
- 拥有一个客户端(java 脚本)启动代码,该代码将从隐藏字段反序列化、构造名称-值字典并将更改事件处理程序附加到正在监视的控件以检查原始值。
- 在服务器端的回发周期中,原始值必须恢复到字典中,以便服务器代码可以注册/取消注册它们。有时,这些值需要重新注册 - 例如,您的原始值是“A”,它被更改为“B”并保存(但 UI 在编辑模式下仍然保持打开状态),因此您可能需要重新注册将原始值注册为“B”。
就我而言,整个解决方案是在基页级别打包的。因此页面开发人员要做的就是翻转标志以指示控件跟踪并通过注册/取消注册来识别控件 - 基页将负责构建原始值字典、注册隐藏字段、注入(inject) js 脚本调用等。/p>