个ajax.Net库的使用例子--下拉框联动

Default.aspx.cs

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
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;

namespace  AjaxText
{
    
public   partial   class  _Default : System.Web.UI.Page
    {
        
public  ArrayList DataSource  =   new  ArrayList();

        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(
typeof (_Default));
        }
        
///   <summary>
        
///  初始化数据源
        
///   </summary>
         public   void  initDataSource()
        {
            DataSource.Add(
new  address( " 湖南 " " 长沙 " ));
            DataSource.Add(
new  address( " 湖南 " " 衡阳 " ));
            DataSource.Add(
new  address( " 湖南 " " 郴州 " ));
            DataSource.Add(
new  address( " 湖南 " " 岳阳 " ));
            DataSource.Add(
new  address( " 广东 " " 广州 " ));
            DataSource.Add(
new  address( " 广东 " " 清远 " ));
            DataSource.Add(
new  address( " 广东 " " 汕头 " ));
            DataSource.Add(
new  address( " 湖北 " " 武汉 " ));
            DataSource.Add(
new  address( " 湖北 " " 十堰 " ));
            DataSource.Add(
new  address( " 湖北 " " 仙桃 " ));
            DataSource.Add(
new  address( " 湖北 " " 天门 " ));
        }

        
///   <summary>
        
///  获取第一个下拉框的数据。
        
///   </summary>
        
///   <returns></returns>
        [Ajax.AjaxMethod]
        
public   string  GetFirstSelectData()
        {
            initDataSource();
            ArrayList arr 
=   new  ArrayList();
            
foreach  (address add  in  DataSource)
            {
                
if  ( ! arr.Contains(add.strProvince))
                {
                    arr.Add(add.strProvince);
                }
            }
            
string  result  =   "" ;
            
foreach  ( string  str  in  arr)
                result 
+=  str  +   " ; " ;
            
if  (result.Length  >   0 )
                result 
=  result.Substring( 0 , result.Length  -   1 );
            
return  result;
        }

        
///   <summary>
        
///  根据省份获取城市。
        
///   </summary>
        
///   <param name="province"></param>
        
///   <returns></returns>
        [Ajax.AjaxMethod]
        
public   string  GetCitys( string  province)
        {
            initDataSource();
            
string  result  =   "" ;
            
if  (province  !=   null   &&  province  !=   string .Empty)
            {
                
foreach  (address add  in  DataSource)
                {
                    
if  (add.strProvince  ==  province)
                        result 
+=  add.strCity  +   " ; " ;
                }
            }
            
if  (result.Length  >   0 )
                result 
=  result.Substring( 0 , result.Length  -   1 );
            
return  result;
        }

        
// 地址对象实体类
         public   class  address
        {
            
public   string  strProvince;
            
public   string  strCity;
            
public  address( string  province, string  city)
            {
                strProvince 
=  province;
                strCity 
=  city;
            }
        }
    }
}


Default.aspx页面的html代码

<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " Default.aspx.cs "  Inherits = " AjaxText._Default "   %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > 无标题页 </ title >
    
< script  language ="javascript"  type ="text/javascript" >
    
// 初始化第一个下拉框,从服务端读取数据。
     // 其实这里应该直接在服务端绑定数据,此处为了演示ajax特地也使用ajax技术绑定数据。
     function  initSelect1()
    {
          
var  Data = _Default.GetFirstSelectData().value
          
var  strData = new  String(Data);
          
var  select1 = document.getElementById( " aa " );
          select1.options.length 
=   0
          
var  arr = strData.split( " ; " );
          
for ( var  i = 0 ;i < arr.length;i ++ )
          {
             
var  varItem  =   new  Option(arr[i],arr[i]);      
             select1.options.add(varItem);
          }
    }
    
    
// 第一个下拉框更改选择时,ajax调用服务端方法更新第二个下拉框数据。
     function  selectchanged()
    {
          
var  select1 = document.getElementById( " aa " );
          
var  Data = _Default.GetCitys(select1.value).value;
          
var  strData = new  String(Data);  
          
var  select2 = document.getElementById( " bb " );
          select2.options.length 
=   0
          
var  arr = strData.split( " ; " );
          
for ( var  i = 0 ;i < arr.length;i ++ )
          {
             
var  varItem  =   new  Option(arr[i],arr[i]);      
             select2.options.add(varItem);
          }
    }
    
</ script >
</ head >
< body  onload ="initSelect1()" >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< select  id ="aa"  onchange ="selectchanged()" >
            
< option > unbounded </ option >
        
</ select >
        
< br  />< br  />
        
< select  id ="bb" >
            
< option > unbounded </ option >
        
</ select >
    
    
</ div >
    
</ form >
</ body >
</ html >


使用ajax.net时应该注意的问题:

1.在pageload事件中
Ajax.Utility.RegisterTypeForAjax(typeof(_Default));
这句必须是typeof(命名空间.类名),而不能是this.GetType()等。javascript中调用的时候直接用这里的类名。

2.调用服务端方法后加.value
如_Default.GetCitys(select1.value).value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值