ASPxComboBox控件联动效果bug改进

简介: 原文:ASPxComboBox控件联动效果bug改进  在应用第三方控件DevExpress控件的时候,大家应该对ASPxComboBox控件应该不是很陌生吧,尤其在做多级联动效果的时候,有着它独特的地方,通过前台控制可以实现异步刷新。
原文: ASPxComboBox控件联动效果bug改进

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

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

      源代码:

   

<table border="1" cellpadding="0" cellspacing="0" 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);
            }
        }

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

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

目录
相关文章
|
1月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
143 0
|
5月前
|
存储 Cloud Native Linux
Qt 关于mouseTracking鼠标追踪和tabletTracking平板追踪的几点官方说明
Qt 关于mouseTracking鼠标追踪和tabletTracking平板追踪的几点官方说明
|
1天前
|
BI
机房合作之报表(控件无法显示在窗体)
机房合作之报表(控件无法显示在窗体)
8 0
|
2月前
|
API Python
Airtest结合Poco对控件实施精准截图,学起来!
Airtest结合Poco对控件实施精准截图,学起来!
|
2月前
|
缓存 小程序 数据可视化
【社区每周】小程序授权弹层和菜单支持长辈版、无障碍版;AMPE情景智能新增widget卡片能力(2022年6月第一期)
【社区每周】小程序授权弹层和菜单支持长辈版、无障碍版;AMPE情景智能新增widget卡片能力(2022年6月第一期)
19 0
|
9月前
|
UED
产品设计--按钮菜单的优化设计
产品设计--按钮菜单的优化设计
|
9月前
|
前端开发 定位技术 容器
百度地图高级开发:上滑推拉菜单CSS解决方案
百度地图高级开发:上滑推拉菜单CSS解决方案
49 0
|
10月前
|
Android开发 iOS开发
Flutter应用开发,系统样式改不了?SystemChrome 状态栏、导航栏、屏幕方向……想改就改
Flutter应用开发,系统样式改不了?SystemChrome 状态栏、导航栏、屏幕方向……想改就改
|
算法
高级UI(二): 触摸反馈
触摸反馈应该是自定义view最简单的部分了,不过内部的原理是比较复杂的,去了解里面的核心机制,需要自己去阅读源码,才能更好理解整个触摸机制,当然,知其所以然也是远远不够的,下面我就带大家了解自定义view触摸机制的难点重点
96 0
高级UI(二): 触摸反馈
|
前端开发
前端工作总结104-控制弹出框不全屏
前端工作总结104-控制弹出框不全屏
57 0

热门文章

最新文章