__doPostBack的简单使用

这段时间写asp.net代码遇到一个问题,如下代码,当用户点击确认后,js弹框给用户再次确认,再次点击确认后执行后台linkbutton代码,当用户点击取消时,执行另外的代码函数。

<asp:LinkButton ID="lbtnConfirmDeliverOffice" runat="server" OnClick="lbtnConfirmDeliverOffice_Click"                OnClientClick="return confirm(‘是否确定转送到承办部门?‘)"  Width="35px" CssClass="btn btn-save">确认</asp:LinkButton>

在这个需求下,考虑使用__dopostback函数。函数的前面是两个下划线. __doPostBack=  "_" + "_" + "doPostBack"。

一、了解__dopostback函数。

          这个函数提供了在JavaScript脚本中执行服务器控件事件处理函数的能力,ASP.NET编程提供了服务器端控件和客户端控件之说,其本质还是脱离不了HTML,我们知道有些控件响应用户后需要做出一个和服务器端交互(PostBack)的过程,为了实现这个功能,ASP.NET服务器控件架构上增加了一个PostBack属性 当这个属性设置为Ture以后,页面就会自动产生__doPostBack函数用于处理用户的请求,另外页面上只要有LinkButton按钮也会自动产生__doPostBack函数,调用该函数提交不会触发控件的任何js事件而直接进入服务器端。 __doPostBack函数是一个纯粹并且是非常简单的javascript函数,大部分的页面PostBack都是由它触发的。注意,这里是“大部分”,因为只有两个(Button、ImageButton)会自己触发页面的PostBack,其它的所有控件都是通过__doPostBack函数触发页面的PostBack的,doPostBack通常都是有系统调用的,有时候为了处理一些特殊的需要,我要需要手动的触发__doPostBack函数。

函数原型:
function __doPostBack(eventTarget, eventArgument)
{
   // 该函数用于执行服务器控件的事件处理函数
}
参数:
    eventTarget: 要调用的服务器控件生成的name属性,如果是子控件,用‘‘$‘或‘:‘分割,如: 父控件:子控件.
    eventArgument: 调用事件时的参数

 下面这段是直接从含有自动回传功能控件的.net Web页面的HTML源代码里面粘帖过来的。大家对照一下函数原型。

<div><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4NDIzMDg2NDRkZMlHJoBQ9CYcWBtBK+zrfZzKoh/i" /></div>

<script type="text/javascript"><!--var theForm = document.forms[‘form1‘];if (!theForm) {    theForm = document.form1;}function __doPostBack(eventTarget, eventArgument) {    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {        theForm.__EVENTTARGET.value = eventTarget;        theForm.__EVENTARGUMENT.value = eventArgument;        theForm.submit();    }}// --></script>    <div>

二、 __dopostback的简单应用。

前台代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>   
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    <input type="button" style="width: 55px" class="btn btn-cancel" onclick="myFunction()"
                value="确认" />
    <asp:LinkButton ID="confirm" runat="server"  onclick="LinkButton2_Click"></asp:LinkButton>
    <asp:LinkButton ID="cancel" runat="server"  onclick="LinkButton1_Click"></asp:LinkButton>

     <script defer="defer" type="text/javascript">
       function myFunction() {
           var result = window.confirm("Yes or NO?");
           if (result) 
           {
             __doPostBack(‘confirm‘,‘‘);
           }
           else 
           { 
             __doPostBack(‘cancel‘,‘‘);
           }
       }
</script>
    </form> 
</body>
</html>

后台代码   :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PartyStudio.Studio
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Library.WebPage.LayoutHelper.MessageBoxJS("yes is choose");
        }

        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            Library.WebPage.LayoutHelper.MessageBoxJS("No is choose");
        }
    }
}

在页面中拖入两个linkbutton控件,后台中分别写入确认事件和取消事件的代码。再在前台页面加入一个按钮,onclick事件绑定js方法,判断

window.confirm("Yes or NO?");

返回的值,true则调用ID为“confirm”的linkbutton的__dopostback事件,false则调用ID为“cancel”的linkbutton的__dopostback事件。

调用__dopostback事件时,两个参数分别为(“linkbutton的ID”,“”)。

时间: 2024-08-24 02:38:06

__doPostBack的简单使用的相关文章

__doPostBack简单的使用方法

这里需要提一下的是,asp.net编程提供了服务端控件和客户端控件的说法,其实还是脱离不了HTML的本质,客户端和服务端需要交互必须要提交,提交有两种方式get和post,get就是通过向服务端发送连接地址,服务端通过地址的参数来获得信息的,一般这些参数都是明文,能在浏览器地址栏看到.而post是通过表单的input等元素提交到服务端的页面的,这些数据一般是看不到的.asp.net的服务端控件其实就是对一般的HTML控件做了个包装,大体是通过隐藏控件提供控制的参数的.  这里介绍一个常用的函数_

深入理解asp.net中的 __doPostBack函数

前段时间做一个.net网站的时候,用到了模拟前端按钮刷新updatePanel进行局部刷新的时候,遇见了这个问题,当时没顾上记下来,查看网上资料,记下来留着以后查看. 很早以前,当我刚接触asp.NET开发时,我曾有很多很多的疑问(大概是因为我以前一直做jsp开发,也接触过一段时间的asp,脑海中没有这种基于“控件编程”和“事件编程“模型的缘故吧.当然,如果对于一个长期从事桌面程序开发的人,转型做asp.net--webform当然很轻松.).当我面对这些功能强大的控件,这些属性,这些事件...

深入学习JS: __doPostBack函数

在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单的方法就是通过一个字符串,比如string strButton = <input type =”button” ID=”button1”>,然后输出到页面,但是如果我们需要这个控件来执行一些服务器的功能,就比较困难了.这里我们就可以用过借用__doPostBack这个函数来完成.接下来我觉个例子来

__dopostback的用法

转载:http://blog.csdn.net/fwj380891124/article/details/8819926 在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单的方法就是通过一个字符串,比如string strButton = <input type =”button” ID=”button1”>,然后输出到页面,但是如果我们需要这个

.net简单页面后台绑定下拉框,按钮,分页 前台aspx页面

一.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UpdateMTablesQCols.aspx.cs"    Inherits="BS.EAP.Portal.Business.DataQuery.UpdateMTablesQCols" EnableEventValidation="false" %> <%

__doPostBack方法解析 __VIEWSTATE __EVENTTARGET __doPostBack __EVENTARGUMENT

关于这个的另一篇博客:http://www.cnblogs.com/Silicon-Fado/archive/2009/04/21/1440437.html __VIEWSTATE:页面状态信息在客户端的存储(ViewState中存储的信息, EnableViewState="true"的控件状态信息).__EVENTTARGET:页面回传触发事件 页面回传触发事件: __doPostBack('Button2','')表示调用按钮Button2在后端的所对应的单击事件 控件回传触发事

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL