• 如何在客户端调用服务端代码


    比如我们在页面上有3个TextBox,3个Button,每个Button分别执行不同的动作。我们现在想在TextBox中检测是否按下了回车键,如果是则执行不同的Button调用。即TextBox1中按下回车就执行Button1的动作,......

    测试中,我发现要调用服务器端代码必须调用__doPostBack函数,但该函数除了在放置有DataGrid控件的页面中会由系统产生外,其他的页面中并不存在。(可以通过查看源文件看到该代码)。这样我们必须手工在aspx中添加__doPostBack函数,和函数一起添加的还有两个隐藏元素,__EVENTTARGET和__EVENTARGUMENT,这是__doPostBack所必须的,实际上,.NET是把产生事件的元素名称以及参数传到,__EVENTTARGET和__EVENTARGUMENT。然后再调用Form的submit函数提交回服务器的,服务器端根据传回来的参数就知道是哪个控件被触发了,从而调用它的相应后端代码,然后再将新页面回送回客户端的。
    以下是我的测试页面,其中使用了两种方法来检测TextBox中的按键
    WebForm2.aspx
    --------------------------------------------------------

    <%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="UTF8Test.WebForm2" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     
    <HEAD>
      
    <title>WebForm2</title>
      
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
      
    <meta content="C#" name="CODE_LANGUAGE">
      
    <meta content="javascript" name="vs_defaultClientScript">
      
    <meta content="http://schemas.microsoft.com/intellisense/ie5"; name="vs_targetSchema">
      
    <script language="javascript" event="onkeydown" for="TextBox1">

          
       
    if(event.keyCode==13)<!-- 注意大小写-->
       
    {
        __doPostBack('Button1','');
        
    return false;<!--很重要,不然会选择Button1进行提交  -->
       }

       
      
    </script>
      
    <script language="javascript" event="onkeydown" for="TextBox2">

          
       
    if(event.keyCode==13)
       
    {
        __doPostBack('Button2','');
        
    return false;<!--很重要,不然会选择Button1进行提交  -->
       }

       
      
    </script>
      
    <script language="javascript">
        
    function keypress()
        
    {
         
    if(event.keyCode==13)
       
    {
          
        __doPostBack('Button3','');
        event.keyCode
    =0<!--很重要,不然会选择Button1进行提交  -->
        
    return false;<!--很重要,不然会选择Button1进行提交  -->
       }

        }

      
    </script>
     
    </HEAD>
     
    <body MS_POSITIONING="GridLayout">
      
    <form id="Form1" method="post" runat="server">
       
    <input type="hidden" name="__EVENTTARGET"> <input type="hidden" name="__EVENTARGUMENT">
       
    <script language="javascript" type="text/javascript">
    <!--
     
    function __doPostBack(eventTarget, eventArgument) {
      
    var theform;
      
    if (window.navigator.appName.toLowerCase().indexOf("microsoft"> -1{
       theform 
    = document.Form1;
      }

      
    else {
       theform 
    = document.forms["Form1"];
      }

      theform.__EVENTTARGET.value 
    = eventTarget.split("$").join(":");
      theform.__EVENTARGUMENT.value 
    = eventArgument;
      theform.submit();
     }

    // -->
       
    </script>
       
    <asp:button id="Button1" style="Z-INDEX: 101; LEFT: 192px; POSITION: absolute; TOP: 88px" runat="server"
        Text
    ="Button1"></asp:button><asp:textbox id="TextBox1" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 88px" runat="server"></asp:textbox>
       
    <asp:Button id="Button2" style="Z-INDEX: 103; LEFT: 192px; POSITION: absolute; TOP: 120px" runat="server"
        Text
    ="Button2"></asp:Button>
       
    <asp:TextBox id="TextBox2" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 120px" runat="server"></asp:TextBox>
       
    <asp:TextBox id="TextBox3" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 152px" runat="server"></asp:TextBox>
       
    <asp:Button id="Button3" style="Z-INDEX: 106; LEFT: 192px; POSITION: absolute; TOP: 152px" runat="server"
        Text
    ="Button3"></asp:Button>
       
    <asp:Label id="Label1" style="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 56px" runat="server"></asp:Label></form>
     
    </body>
    </HTML>

    WebForm2.aspx.cs
    ----------------------------------------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace UTF8Test
    {
     
    /// <summary>
     
    /// WebForm2 的摘要说明。
     
    /// </summary>

     public class WebForm2 : System.Web.UI.Page
     
    {
      
    protected System.Web.UI.WebControls.TextBox TextBox1;
      
    protected System.Web.UI.WebControls.Button Button2;
      
    protected System.Web.UI.WebControls.TextBox TextBox2;
      
    protected System.Web.UI.WebControls.TextBox TextBox3;
      
    protected System.Web.UI.WebControls.Button Button3;
      
    protected System.Web.UI.WebControls.Label Label1;
      
    protected System.Web.UI.WebControls.Button Button1;
     
      
    private void Page_Load(object sender, System.EventArgs e)
      
    {
       
    // 在此处放置用户代码以初始化页面
       TextBox3.Attributes.Add("onkeypress","keypress()");//注意大小写
      }


      
    Web 窗体设计器生成的代码

      
    private void Button1_Click(object sender, System.EventArgs e)
      
    {
       Label1.Text 
    = "1";
      }


      
    private void Button2_Click(object sender, System.EventArgs e)
      
    {
       Label1.Text 
    = "2";
      }


      
    private void Button3_Click(object sender, System.EventArgs e)
      
    {
       Label1.Text 
    = "3";
      }

     }

    }

  • 相关阅读:
    实验3 简单的分支与循环结构 2.利用循环计算n个圆柱体体积。
    实验 3 简单的分支与循环结构 第一题 编写求圆面积的程序,要求当输入的半径r<=0时,提示输入错误,要求r为浮点型,r的数值是动态的由键盘输入
    心得3
    作业 3 应用分支与循环结构解决问题
    实验5 函数
    实验1 题目2
    第三,四章学习心得
    第2章学习心得
    第一章学习心得
    5-3
  • 原文地址:https://www.cnblogs.com/ghd258/p/260240.html
Copyright © 2020-2023  润新知