近期由于项目需要实现大量的无刷新的连动下拉列表,感觉每个页面都copy一份javascript脚本的方法有点蠢,就产生了封一个通用类的念头,先是我同事myw研究了一个版本(这里特别感谢[分享]新封装的一个实现无刷新连动下拉列表类),感觉他的那个使用的限制太多,就在他的基础上改造了一下,产生了下面的版本,虽然还有一定的使用限制,但总的来说还是比较好用的,具体说说实现及使用方法吧!

1.实现方法:
其实原理很简单,先通过cs脚本初始化javascript脚本,再把javascript脚本通HttpContext.Current.Response.Write写入客户端,当然首先还需对一对DropDownList控件进行简单处理,限定是DropDownList的数据源datasource必须使用datatable,不过可以通过根据需要改造来适应其他类型的数据源;

直接看代码吧,还是比较简单的

[分享]新封装的一个实现无刷新连动下拉列表类using System;
[分享]新封装的一个实现无刷新连动下拉列表类
using System.Data;
[分享]新封装的一个实现无刷新连动下拉列表类
using System.Web;
[分享]新封装的一个实现无刷新连动下拉列表类
using System.Web.UI;
[分享]新封装的一个实现无刷新连动下拉列表类
using System.Web.UI.WebControls;
[分享]新封装的一个实现无刷新连动下拉列表类
[分享]新封装的一个实现无刷新连动下拉列表类
namespace NoRefreshJointDDL

2.使用方法,附测试源码:
首先是取一对DropDownList控件的数据源,并绑定它们
接着当然是实例化类CNoFlashDownList了,如果用的多可以考虑封成静态的
然后是指定它们各自用于连动的关系列,这里暴露的两个属性DriverRelation和DrivenerRelation
uc.DriverRelation = "DataType";
uc.DrivenerRelation = "DataType";
最后是调用RegisterDropDownList方法注册控件了

测试的代码

[分享]新封装的一个实现无刷新连动下拉列表类protected System.Web.UI.WebControls.DropDownList ddlDrivener;
[分享]新封装的一个实现无刷新连动下拉列表类        
protected System.Web.UI.WebControls.DropDownList ddlDriver;
[分享]新封装的一个实现无刷新连动下拉列表类    
[分享]新封装的一个实现无刷新连动下拉列表类        
private void Page_Load(object sender, System.EventArgs e)
        }

3.存在的问题
上面的实现在一个页面只有一对连动的DropDownList控件时完全满足需求,但是如果出现并注册多对时就会产生紊乱了,后来想到重载RegisterDropDownList方法,加一个唯一区别的对标识,重复写段带区别的脚本到客户端,但是还是感觉有点土,因为会重复出现一些类似的脚本,违背了xp编程原则;

希望有兴趣的同仁,对上面的实现,以及我提出的问题提点意见和解决方案,先谢谢了……

下载:NoRefreshJointDDL.rar

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2022-12-23
  • 2021-12-10
猜你喜欢
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
  • 2021-10-23
相关资源
相似解决方案