第一种方法:
如果要是使用的最基础的ajax调用方式,应该做这几个步骤:1) 在客户端使用XMLhttp,通过javascript类似的代码
objXMLHttp.onreadystatechange = 函数名,执行填充市区的方法;
objXMLHttp.open( 'POST', 要处理postback的页面, true );
objXMLHttp.setRequestHeader( 'Content-Type', 'text/xml' );
objXMLHttp.send( xml格式的参数,是选择的省的index);
2)在Page_laod中,通过类似的代码,不要使用IsPostback.
if ( (Request.ContentType.ToLower() == "text/xml") && (Request.RequestType.ToLower() == "post") )
{
XmlDocument objXML = new XmlDocument();
try
{
objXML.Load(Request.InputStream);
Request.InputStream.Position = 0;
if ( (objXML.DocumentElement != null) && (objXML.DocumentElement.Name != null) &&
(objXML.DocumentElement.Name == "root"))
{
ProcessAjaxCall(objXML);//这个方法的作用是提取从客户断传来的省的index,通过调用Webservice或连接数据库取回来的市区的数据,以xml格式.
}
return;
}
catch (Exception ex)
{ }
}
3) 在客户端使用刚才传回来的xml格式的数据,使用javascript添加数据到dropdownlist中,就可以实现
但是需要大约150行的代码
第二种方法:
不使用XMLHttp,你的page页面要实现System.Web.UI.ICallbackEventHandler接口,实现
public string GetCallbackResult()
public void RaiseCallbackEvent(string eventArgument)两个基本点方法,同样也要大量使用javascript方法去获得数据和填充数据,调用webservice或中间层通过RaiseCallbackEvent方法来封装.
先提供这两种方法,他们使用的javascript代码行都很大.
第三种方法:
举例来说,有两个listbox控件1和2,分别显示国家的信息和相应国家中的省或州的信息,当我们选择了控件1中的国家,控件2将无刷新地显示这个国家中的省或洲的信息,对于这样的操作,可以将国家和省或州的信息一次从数据库移到web服务器端,发送到客户端,通过javascript的操作来实现无刷新,但是有个要考虑效率的问题,在客户端要进行缓存数据,服务器端也要进行数据的缓存,这样可以做到操作几万条数据市,响应时间在10秒之内.它与前两种方法区别在于取数据时不需要postback操作.