1.   动态添加生成的控件:Asp.net开发网站,最喜欢用的就是使用服务器控件,在后台进行数据操作了,你无需再去管get还是post提交,也不用去理会form,只需在后台服务器控件的事件中就可以对数据库进行操作。

2.   客户端脚本中调用webservice中的方法进行数据库操作:但有些时候会有一些控件是动态添加生成,又需要通过这些控件对数据库进行操作。由于动态添加的控件无法调用后台服务器控件的事件,这个总会让人觉得很麻烦。以前碰到这种问题,第一个想到就就是js+ajax方式,在客户端脚本中对webservice进行调用。

3.   客户端_doPostBack函数:但是使用webservice需要创建额外的webservice文件,再从脚本进行调用,也确实挺麻烦的,好些时候也仅仅是使用这些控件进行一些简单的诸如删除数据等操作,使用webservice似乎也有些浪费。如果这些控件能直接使用后台事件,那就方便的多了。带着这个问题,偶然的一次,发现了可以使用客户端__doPostBack函数调用后台事件。

4.   _doPostBack函数工作原理:这里介绍一个常用的函数_doPostBack,这个函数如果是ASP.Netrender出来的页面就是自动产生这个函数,比如有带autopostback属性的控件,且其属性为true的页面,带编辑列的datagrid页面。__doPostBack是通过__EVENTTARGET,__EVENTARGUMENT两个隐藏控件向服务端发送控制信息的。__EVENTTARGET为要调用控件的名称,如果要调用的控件是子控件,用''$'或':'分割父控件:子控件,__EVENTARGUMENT是调用事件时的参数。

5.   示例:使用以下示例通过点击页面中的客户端按钮btnClient调用后台事件。

示例代码:

    <asp:Button ID="btnServer" name=” btnServer” runat="server" Text="Button" onclick="Button1_Click" style="display:none;"/>
<input id="btnClient" type="button" value="button" onclick="__doPostBack('Button1','')"/>
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="True" style="display:none;"></asp:DropDownList>

后台代码:

 protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("aaa");
}

控件说明:

1.btnServer是服务器控件,其Click事件供btnClient客户端控件回发调用,状态为隐藏;

2.btnClient 是客户端控件,使用onclick="__doPostBack('Button1','')"调用服务器控件的后台事件。

3.dll控件不可缺少,是__doPostBack()函数调用后台事件的枢纽,状态为隐藏;

6.   扩展:

Request["__EVENTTARGET"]:获取得到引发页面PostBack的控件ID
Request["__EVENTARGUMENT"]:获取参数。

其中eventTarget 和eventArgument,是两个就是用来存储在回送的时候获取是哪个控件触发了回送,并且带了什么参数。

总之,调用__doPostBack函数可以实现客户端控件调用服务器端控件的响应。而且可根据两个参数确定触发事件的控件的id等相关属性和传递的参数进行相应的数据库操作。

虽然对这个函数还没有完全理解其原理,但以后使用客户端控件调用服务器控件的后台事件是没问题了。

关于客户端调用后台事件__doPostBack函数的使用的更多相关文章

  1. .NET 前台调用后台事件和方法实现小结

    转自:https://www.cnblogs.com/kinger906/p/3431842.html 除了下文讲的方式外,还有一种方式:html里面使用ajax写好提交方式和提交参数,然后以写一行带 ...

  2. 深入学习JS: __doPostBack函数

    在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单 ...

  3. js 调用后台,后台调用js

    <html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat=" ...

  4. Ext.net控件调整后台事件、方法论

    一.以ext.net的button为例调用后台事件: 前台代码: <ext:Button ID="Button1" runat="server" Text ...

  5. 使用__doPostBack函数来达到使用客户端的控件来调用服务器端的函数的--小结

    类比LinkButton按钮 LinkButton前台生成代码: JS代码: //<![CDATA[ var theForm = document.forms['form1']; if (!th ...

  6. js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法

    http://blog.csdn.net/deepwishly/article/details/6670942  ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...

  7. js调用.net后台事件,和后台调用前台等方法总结(转帖)

    js调用.net后台事件,和后台调用前台等方法总结 原文来自:http://hi.baidu.com/xiaowei0705/blog/item/4d56163f5e4bf616bba16725.ht ...

  8. 使用Ajax在javascript中调用后台C#函数

    使用Ajax在javascript中调用后台C#函数 最近一段时间在紧跟一个网站的项目,数据库中用户表的UserName要求是唯一的,所以当用户选定一个用户名进行注册时要首先检查该用户名是否已被占用, ...

  9. 关于datagrid中控件利用js调用后台方法事件的问题

    前台调用后台方法除了用button的click事件,还可以用js调用  一.前台页面如图 需求点击这个按钮触发后台事件,从而能够调用存储过程 <epoint:HyperLinkColumn He ...

随机推荐

  1. mysql 累加求和

    ; SELECT temp.*,(@csum := total + @csum) as csums from ( ) as total,month(openedDate) as date from z ...

  2. Project2016下载安装密钥激活教程破解

    project2016发布增加了许多功能.Microsoft Office 2016 官方正式版发布!这是微软发布的全新办公软件套件,相比现有Office 2013的变化也不是很大,界面和功能都只是微 ...

  3. 关于 Level 和 Promotion,其实就那么简单

    曾经有读者和朋友问我:一般硅谷工作了三四年以后,会是什么 level?找工作会拿到什么 package?拿到这个问题之后,我想了想,还是没有回答.其实三四年的时间,对于曾经在同一个起点的两个人,因为际 ...

  4. How to start a VirtualBox VM headless in Windows 10

    If you wanted to start a VirtualBox VM headless (no UI) in the past, you needed additional tools.  I ...

  5. 集合,ArrayList

    用集合代替数组: Console.Write("请输入人数:"); int renshu = int.Parse(Console.ReadLine()); ArrayList ch ...

  6. 【Noip模拟 20161004】局域网

    问题描述 所有SZSZ 学生翘首以盼的新教学楼总算快要竣工了,接下来到了网络布线的时候.网络系统的总布局是由nn台计算机组成的有线局域网,每根网线长度为dd,正常情况下,网线是可以缠绕使其变短但是不能 ...

  7. unity WegGL 调用js

    test.jslib文件,必须放到Assets/Plugins下,这里是:Assets/Plugins/WebGL mergeInto(LibraryManager.library, { Hello: ...

  8. 1.13.Mark1

    [经济学人]双语阅读:律师事务所 标价更高 收益更少 Business 商业报道   Law firms 律师事务所   Charging more, getting less 标价更高,收益更少 L ...

  9. webpack打包avalon+oniui+jquery

    随着avalon的发展壮大,我根据CSDN的统计数字,中国前端大概有1%的人在使用avalon了. avalon的最大优势是能兼容IE6,并且其API是非常稳定,只是在1.3.7 对ms-duplex ...

  10. SQL Server 用角色(Role)管理数据库权限

    当数据库越来越多,连接到数据库的应用程序,服务器,账号越来越多的时候,为了既能达到满足账号操作数据权限需求,又不扩大其操作权限,保证数据库的安全性,有时候需要用角色来参与到权限管理中,通过角色做一个权 ...