asp.net的postback机制:__doPostBack
__doPostBack
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
function __doPostBack(eventTarget, eventArgument)
{
if (!theForm.onsubmit || (theForm.onsubmit() != false))
{
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
因为最终呈现给浏览器的内容都是html内容,采用asp.net技术也不能例外.要实现webcontrol的postback机制.只能在原来的submit上做文章.ms呈现给我们的,就是这种精巧的思维!
我看到,asp.net现在页面上添加了两个hidden input,这两个input分别用来存放触发postback的control的ID和参数.这就是我们大部分人认识到的:
__doPostBack(obj1,obj2)的第一个参数是控件ID,第二个参数是postback的参数.然后就可以在后台用Request.Form["__EVENTTARGET"]和Request.Form["__EVENTARGUMENT"]取得控件ID和参数.
很简单就实现了看似很神奇,以为内部有什么高深的处理的过程!如此轻巧的实现了asp.net的postback机制,佩服佩服!只要我们看懂了上边的代码,对__doPostBack的使用就应该不是什么难事了.可以说__doPostBack就是这么简单的一回事.
不过,另外要注意的就是asp.net的webcontrols中,Button和ImgButton是异类,它们不是利用__doPostBack来实现postback的.为什么这样,可能因为Button在html中本来就是有触发submit事件的功能吧.asp.net不过是要令原来html中一些不能触发submit的东西submit,才弄出了__doPostBack来实现.对于原来就能submit的Button,又何必多此一举呢.(仅个人理解,未经验证!)
所以如果是Button的postback,在后台是不能用Request.Form["__EVENTTARGET"]和Request.Form["__EVENTARGUMENT"]取得控件ID和参数的.那么,怎么取呢?看代码:
取Button
foreach (string str in Request.Form)
{
Control c = Page.FindControl(str);
if
相关文档:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
/// <summary>
/// Data ......
private bool IsPicture(string filePath)//filePath是文件的完整路径
{
try
......
1.读出方式
DataReader和DataSet都可以实现对数据库数据的查询返回,但前者只能提供快速的查询方式,后者还可以实现对数据的添加、修改、删除功能。
(1)DataReader方式读取:
string sConnString = "server=localhost;User Id=root;password=root;Persist Security Info=True;database=db_user";
MySqlConnection myC ......
最近在做一个网站,显示数据时为了方便使用了GridView。虽然GridView显示数据的功能很强也很方便,但它的样式却并不美观。为了使GridView的显示样式美观一些,经常需要设置表头的背景,我总结出的方法如下:
方法一:
在GridView的OnRowDataBound事件中设置背景,代码如下:
protected void GridView1_RowDataBound(ob ......
导读:
FCKEditor目前的最新版本是2.6,但支持.NET的DLL版本还是2.5,本文介绍FCKEditor2.6在ASP.NET中的配置方法。
本文的示例下载地址(包含了整个解决方案及网站,下载后即可使用):
地址:http://www.china-aspx.com/Forum/showtopic-57.aspx
FCKEditor官方下载地址:http://www.fckeditor.net/down ......