前言 看到网上很多关于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使用的基本设置。
大家也可以在这个基础上加强,写得更通用一些:)
本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586496,如需转载请自行联系原作者