关于客户端调用后台事件__doPostBack函数的使用
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函数的使用的更多相关文章
- .NET 前台调用后台事件和方法实现小结
转自:https://www.cnblogs.com/kinger906/p/3431842.html 除了下文讲的方式外,还有一种方式:html里面使用ajax写好提交方式和提交参数,然后以写一行带 ...
- 深入学习JS: __doPostBack函数
在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单 ...
- js 调用后台,后台调用js
<html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat=" ...
- Ext.net控件调整后台事件、方法论
一.以ext.net的button为例调用后台事件: 前台代码: <ext:Button ID="Button1" runat="server" Text ...
- 使用__doPostBack函数来达到使用客户端的控件来调用服务器端的函数的--小结
类比LinkButton按钮 LinkButton前台生成代码: JS代码: //<![CDATA[ var theForm = document.forms['form1']; if (!th ...
- js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法
http://blog.csdn.net/deepwishly/article/details/6670942 ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...
- js调用.net后台事件,和后台调用前台等方法总结(转帖)
js调用.net后台事件,和后台调用前台等方法总结 原文来自:http://hi.baidu.com/xiaowei0705/blog/item/4d56163f5e4bf616bba16725.ht ...
- 使用Ajax在javascript中调用后台C#函数
使用Ajax在javascript中调用后台C#函数 最近一段时间在紧跟一个网站的项目,数据库中用户表的UserName要求是唯一的,所以当用户选定一个用户名进行注册时要首先检查该用户名是否已被占用, ...
- 关于datagrid中控件利用js调用后台方法事件的问题
前台调用后台方法除了用button的click事件,还可以用js调用 一.前台页面如图 需求点击这个按钮触发后台事件,从而能够调用存储过程 <epoint:HyperLinkColumn He ...
随机推荐
- 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)
带徒弟学JAVA架构(Jeecg社区) Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼? 太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...
- psutil模块
python模块之psutil 一.psutil模块 1.介绍 psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率( ...
- webstorm设置自定义代码快捷键
1.file——>setting——>Editor——>live Templates出现如下界面 2.点击左上角绿色+选择template group创建分组(图中React Vue ...
- 1047B_Cover Points
B. Cover Points time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- js判断对象
一般学java的小伙伴,刚开始写js时如果遇到要判断一个字符串是否不为空,往往会这样写 if(str != undefined && str != null && st ...
- ThinkPHP5分页样式设置
手册上讲分页类的使用时对样式讲的不够详细,这里我结合个人的摸索给大家一些参考意见. config里的分页配置我使用的是系统默认的bootstrap,查看thinkphp\library\think\p ...
- Excel VBA 使用笔记
开发工具选项卡(Developer Tab) File Tab -> Options -> Customize Ribbon -> Main Tabs -> Developer ...
- Python调用外部系统命令
利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法,包括 ...
- ping ip多进程处理小程序
最近,环境维护需要经常需要判断某些服务器上的IP是否可达,由于服务器数量较多,逐一手工ping检查太过繁琐.写个小程序使用. 实现和说明 1.使用配置文件ip.txt实现可配置指定ip列表. 2.利用 ...
- TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP
TCP/IP,HTTP,SOAP等协议之区别 术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...