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;
}
/// 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 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);
}
}
function selectChangeData(selectedValue)
{
try
{
//获得数据并添加到列表框
AddItemsTosDropdown(ItemSeach.GetData(String(selectedValue)).value,"<%=ddlControl.ClientID%>");
}catch(e){
alert(e.message);
}
}
{
try
{
//获得数据并添加到列表框
AddItemsTosDropdown(ItemSeach.GetData(String(selectedValue)).value,"<%=ddlControl.ClientID%>");
}catch(e){
alert(e.message);
}
}
OK!没有一点问题,复制代码只需要改下数据源获取就可以用了,比较通用,但是别忘了AjaxPro使用的基本设置。
大家也可以在这个基础上加强,写得更通用一些:)
补充说明:
感谢上司,但是不知道上司是不是也是拿来主义,所有来个通用的:感谢代码的原作者:)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!