我有一个用户控件,正在页面中调用。 伪代码如下 主页

    <%@ 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 中的值已更改”

我该如何继续。

请您参考如下方法:

对于通用解决方案,您需要一个跟踪旧值的解决方案。解决方案的典型概要是

  1. 有一个隐藏字段来存储要跟踪的控件的旧值。您需要开发一些方案来序列化/反序列化名称/ID-值对。它可以像冒号分隔的名称/值对的逗号分隔列表一样简单。不过,您可以考虑 JSON。
  2. 在服务器端有一个代码,对于给定的父控件,递归地循环所有子控件并将其原始值(以及名称/ID)存储到隐藏字段中。出于性能原因,您可以接受要保存的控件类型(或者让您的逻辑根据控件的类型跳过控件)。
  3. # 2 仅需要在显示页面时完成,即它应该在回发中发生。但是,当然,您可能会遇到这样的情况:切换面板的可见性,然后您想要跟踪面板中的控件。因此,为了处理这种情况,您实际上需要创建一个名称/值对的字典,以便在页面生命周期中存储控件。您可以注册用于跟踪的控件,也可以从跟踪中取消注册它们。
  4. 拥有一个客户端(java 脚本)启动代码,该代码将从隐藏字段反序列化、构造名称-值字典并将更改事件处理程序附加到正在监视的控件以检查原始值。
  5. 在服务器端的回发周期中,原始值必须恢复到字典中,以便服务器代码可以注册/取消注册它们。有时,这些值需要重新注册 - 例如,您的原始值是“A”,它被更改为“B”并保存(但 UI 在编辑模式下仍然保持打开状态),因此您可能需要重新注册将原始值注册为“B”。

就我而言,整个解决方案是在基页级别打包的。因此页面开发人员要做的就是翻转标志以指示控件跟踪并通过注册/取消注册来识别控件 - 基页将负责构建原始值字典、注册隐藏字段、注入(inject) js 脚本调用等。/p>


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!