AjaxPro无刷新选择列表框/下拉框[方便|稳定]

前言
    看到网上很多关于ASP.NET的无刷新选择列表框,服务器端有的返回DataSet,有的返回DataView,有的用分隔符拼接一个长字符串返回,相应的客户端解析也是各有不同。DataSet+JS我是怎么也没弄成过,顺便在这里讲下返回DataSet不存在数据库关闭与否的问题。前端时间我上司写了一个这样的东西我改了下还蛮好用的,不敢独享,与大家分享一下吧:)

正题
    服务器端代码:

/// <summary>
    
/// Ajax服务器端响应方法
    
/// </summary>
    
/// <param name="param"></param>
    
/// <returns></returns>
    [AjaxPro.AjaxMethod]
    
public List<List<string>> GetData(string param)
    {
        
//获得数据
        Hashtable ht = DBHelper.GetDDLHashData(param);
        List
<List<string>> list = new List<List<string>>();
        List
<string> ilist;
        
//迭代拷贝数据
        foreach (DictionaryEntry item in ht)
        {
            ilist 
= new List<string>();
            ilist.Add(item.Key.ToString());
            ilist.Add(item.Value.ToString());
            list.Add(ilist);
        }
        
return list;
    }

    代码基本上不难,用泛型来包装一个List返回给客户端。再看客户端代码:
//添加Dropdownlist内容
function AddItemsTosDropdown(array,obj)
{
    
try{
        
var GetObj=document.getElementById(obj);
        GetObj.length
=0;
        GetObj.options.add(
new Option("请选择",""));
        
for(var i=0;i<array.length;i++){
            GetObj.options.add(
new Option(array[i][1],array[i][0]));
        }
    }
    
catch(e){
        alert(e.message);
    }
}
    调用js方法代码:
function selectChangeData(selectedValue)
{    
    
try
    {
        
//获得数据并添加到列表框
        AddItemsTosDropdown(ItemSeach.GetData(String(selectedValue)).value,"<%=ddlControl.ClientID%>");
    }
catch(e){
        alert(e.message);
    }
}

    OK!没有一点问题,复制代码只需要改下数据源获取就可以用了,比较通用,但是别忘了AjaxPro使用的基本设置。
大家也可以在这个基础上加强,写得更通用一些:)

补充说明:
    感谢上司,但是不知道上司是不是也是拿来主义,所有来个通用的:感谢代码的原作者:)

posted @ 2008-06-16 11:58  农民伯伯  阅读(1755)  评论(6编辑  收藏  举报