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. ADOQuery.Parameters: Property Parameters does not exist

    Exception class EReadError with message 'Property Parameters does not exist'. Exception class EReadE ...

  2. hive,分桶,内外部表,分区

    简单的word-count操作: [root@master test-map]# head -10 The_Man_of_Property.txt    #先看看数据Preface“The Forsy ...

  3. maven eclipse操作

    目前eclipse默认集成maven插件,但要在eclipse中配置maven的setting才可以. setting可以选用mvn解压包下的目录,也可用仓库下的settings文件. 因我们需要结合 ...

  4. HTTP梳理

    HTTP请求头 Host:初始URL中的主机名和端口 Accept:浏览器可接受的MIME类型 Acceept-Charset:浏览器接受的字符集 Accept-Encoding:浏览器能够进行解码的 ...

  5. ABAP-2-会计凭证批量数据导入本地ACCESS

    ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...

  6. 2339 3.1.1 Agri-Net 最短网络

    Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享 ...

  7. 用waitpid函数回收进程

    waitpid函数:作用同wait,但可指定pid进程清理,可以不阻塞. 原型:pid_t waitpid(pid_t pid, int *status, in options); 返回值:成功时返回 ...

  8. 设计模式入门——Head First

    设计模式是被前人发现.经过总结形成了一套某一类问题的一般性解决方案.使用模式最好的方式是:把模式装进脑子,然后在设计和已有的应用中,寻找何处可以使用它们.以往是代码复用,现在是经验复用. 从模拟鸭子游 ...

  9. 【373】LabelEncoder 相关

    OneHotEncoder独热编码和 LabelEncoder标签编码 pandas.DataFrame.groupby

  10. plsql和tsql常用函数比对

    http://www.jb51.net/list/list_154_1.htm 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value fro ...