原文:ASPxComboBox控件联动效果bug改进

  在应用第三方控件DevExpress控件的时候,大家应该对ASPxComboBox控件应该不是很陌生吧,尤其在做多级联动效果的时候,有着它独特的地方,通过前台控制可以实现异步刷新。但是在实际做项目中,我发现它存在一定的问题。

比如,我们做四级联动效果,四级分别为案件类型、案件性质、性质分类、性质细类,选择案件类型时,触发案件性质数据加载;选择案件性质时,性质分类数据加载,依次类推……;当我们将四级数据都加载到控件中的时候,如果我们重新选择案件类型(第一级)时,此时你会发现,二级内容重新加载了,但是三级四级内容没有清空,也没有变化,应该说这是不符合条件的,针对这个问题,我设计了下面解决方案

源代码:

<table border="" cellpadding="" cellspacing="" style="width:100%">
<tr>
<td>
<dx:ASPxComboBox runat="server" ID="CbxAJLX" ClientInstanceName="cbxAJLX" DropDownStyle="DropDownList" TextField="AJLX" ValueField="AJLX" Width="80px" OnCallback="CbxAJLX_Callback">
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnAJLXChanged(s); }" />
</dx:ASPxComboBox>
</td>
<td>
<dx:ASPxComboBox runat="server" ID="CbxAJXZ" ClientInstanceName="cbxAJXZ" DropDownStyle="DropDownList" TextField="AJXZ" ValueField="AJXZ" Width="80px" OnCallback="CbxAJXZ_Callback">
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnAJXZChanged(s); }" />
</dx:ASPxComboBox>
</td>
<td>
<dx:ASPxComboBox runat="server" ID="CbxXZFL" ClientInstanceName="cbxXZFL" DropDownStyle="DropDownList" TextField="XZFL" ValueField="XZFL" Width="80px" OnCallback="CbxXZFL_Callback">
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnXZFLChanged(s); }" />
</dx:ASPxComboBox>
</td>
<td>
<dx:ASPxComboBox runat="server" ID="CbxXZXL" ClientInstanceName="cbxXZXL" DropDownStyle="DropDownList" TextField="XZXL" ValueField="XZXL" Width="80px" OnCallback="CbxXZXL_Callback">
</dx:ASPxComboBox>
</td>
</tr>
</table>

  我先解释一下该代码吧,OnCallback事件时用于自身更新数据的,主要时通过上一级事件SelectedIndexChanged触发,其主要内容为cbxAJXZ.PerformCallback(cbxAJLX.GetValue().toString())。

  针对不能清空问题,在下级数据更新之前,我设计了一个方法,用于清空下级后面的所有联动控件中的数据,代码如下

function OnAJLXChanged(cbxAJLX) {
myAjlx("clear");
cbxAJXZ.PerformCallback(cbxAJLX.GetValue().toString());
}
function myAjlx(cmd) {
if (cmd == "clear") {
cbxAJXZ.SetValue(null);
cbxXZFL.SetValue(null);
cbxXZXL.SetValue(null);
}
}

  通过调用上面这段代码可以实现多级数据联动不足的地方,下面是整个脚本

function OnAJLXChanged(cbxAJLX) {
myAjlx("clear");
cbxAJXZ.PerformCallback(cbxAJLX.GetValue().toString());
}
function OnAJXZChanged(cbxAJXZ) {
myAjxz("clear");
cbxXZFL.PerformCallback(cbxAJXZ.GetValue().toString());
}
function OnXZFLChanged(cbxXZFL) {
myXzfl("clear");
cbxXZXL.PerformCallback(cbxXZFL.GetValue().toString());
}
function myYwlx(cmd) {
if (cmd == "clear") {
cbxAJLX.SetValue(null);
cbxAJXZ.SetValue(null);
cbxXZFL.SetValue(null);
cbxXZXL.SetValue(null);
}
}
function myAjlx(cmd) {
if (cmd == "clear") {
cbxAJXZ.SetValue(null);
cbxXZFL.SetValue(null);
cbxXZXL.SetValue(null);
}
}
function myAjxz(cmd) {
if (cmd == "clear") {
cbxXZFL.SetValue(null);
cbxXZXL.SetValue(null);
}
}
function myXzfl(cmd) {
if (cmd == "clear") {
cbxXZXL.SetValue(null);
}
}

  注意:最后一级不用调用脚本进行清空

  本文主要解决了,多级联动过程中,联动数据不能及时清空的问题;本文只代表本人个人观点,希望广大博友提出好的建议和意见,谢谢~

ASPxComboBox控件联动效果bug改进的更多相关文章

  1. layui时间控件联动:开始时间、结束时间,有效时间范围

    实际开发中,经常遇到时间控件联动的情况,然后每次都网上搜代码Copy,不过每次都有点小Bug让你错不及防: 这次,在这里备份一下,以后Copy自己的得了(欢迎Copy代码,若遇到问题,请麻烦回复我一下 ...

  2. winform 用户控件、 动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  3. winform用户控件、动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  4. WP开发笔记——控件倾斜效果

    创建一个基本的 Windows Phone 应用程序并添加 TiltEffect 类文件. 添加要倾斜的控件的分类. 全局应用 IsTiltEnabled 依赖项属性,以便为所有的指定控件提供倾斜功能 ...

  5. Windows Phone 的控件倾斜效果

    原文:Windows Phone 的控件倾斜效果 Windows Phone 7的系统设置里,按钮都有一个点击倾斜的效果,但自己添加的控件就没有.但微软提供了这个效果的代码:TiltEffect MS ...

  6. 自行实现透明的控件如Panel GroupBox(使用不需要重绘父控件的效果,一切都因为窗口有了WS_EX_TRANSPARENT属性)

    CSDN的Blog开通了.我想这里的Blog作为今后自己回答别人问题的时候,收藏答案的地方很不错呢. 因为社区的贴子早晚都会沉下去,查找起来很不方便,甚至再也找不到呢. Q: http://commu ...

  7. duilib relativepos属性导致控件错误的bug修复

    转载请说明出处,谢谢~~ 我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/381 ...

  8. .NET在WebForm里实现类似WinForm里面TrackBar控件的效果(AJAX Control Toolkit的使用)

    WinForm 里面有一个 TrackBar 控件,表示一个标准的 Windows 跟踪条,是类似于 ScrollBar 控件的可滚动控件.用这个控件可以实现很多可以实时调整的功能,比如最常见的音量调 ...

  9. wpf RadioButton控件的一个bug,onpropertychanged后会修改旧属性的值

    测试代码下载:http://files.cnblogs.com/djangochina/RadioButtonBug.zip 从上面列表选择不同的行,再设置下面不同的radiobutton看看结果 b ...

随机推荐

  1. Java 中泛型的全面解析(转)

    Java泛型(generics) 是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在J ...

  2. 光谱郑匡移动互联网O2O完美融合

    移动互联网尽管市场颇大,前景广阔,可是由于数据过于密集,非常难精准的定位所谓的目标客户群,然而O2O的线下市场却与互联网市场有极大的反差.一直认为高校周边的小商家是最幸福的生意人,客户明白(就是本校学 ...

  3. [MSSQL]最小公约数

    [摘要]一个朋友在展BOM的时候有这种需求,两列字段(数值):A ,B   A=用量,B=底数,组成用量=用量/底数.A/B,若能被整除,显示整除的结果,若不能整除显示分数形式A/B(分数形式要是约分 ...

  4. Java采用HttpClient对于Web登录

    http://e.neusoft.edu.cn/nav_login 模拟浏览器登录该网站上方.登录server基于验证码.refer和cookie保护,此代码html档. import java.io ...

  5. —页面布局实例———win7自己的小算盘

    晚上7各地点布局,9点半,刚拿到. 他发现自己专注的时候效率挺高真的哈萨克斯坦.计算器布局前.做了两件简单的页面布局练练手.今晚总体感觉更好,不难. 器之间调试有点蛋疼,真心不想搭理IE. 在进行布局 ...

  6. C#如何获得 WINDOWS 版本号

    using System; using System.Runtime.InteropServices; namespace GetWindowsVersion { [ StructLayout( La ...

  7. oracle在imp订单具体解释

    oracle在imp订单具体解释 Oracle导入实用程序(Import utility)同意从数据库中提取数据,和写入数据到一个操作系统文件项目.imp所用的基本格式:imp[username[/p ...

  8. 用AsyncTask实现多线程

    前言 在Android应用开发中,有时我们需要实现任务的同步.Android里的AsyncTask类可以帮我们更好地管理线程同步(异步方式),就像Thread类能做的,不过用法比Thread更简单. ...

  9. 系统如何端子app弄root才干

    最近由于调试USB OTG怪东西.这导致USB端口被占用,这项.虽然我是project版本号,但不能运行adb shell,这是不可能的debug该. 所以,我现在是一个系统终端apk,规划 http ...

  10. Android提高第二篇之SurfaceView的基本使用

    本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 上次介绍MediaPlayer的时候略微介绍了SurfaceView,SurfaceView因为能够直接从内存 ...