当前位置: 首页 > news >正文

r.a.d controls 学习笔记 - radcombobox + RadWindowManager 组成的参照控件


在大多数管理系统中,参照录入是不可缺少的,因为我们不可能要求用户记住每一项档案的编码甚至ID。但在WebForm中一直未能找到满意的参照控件,telerik 的 combobox 算是比较好的一个了。

虽然 radcombobox 对参照功能实现的还算不错,却无足满足“上帝”要求的另一项功能:随用随加,即客户往往要在开始日常业务处理时才发现某项基本档案尚未设置,如果让客户退出当前页面->进行档案设置->返回当前页面的确有点不太友好。以下是对该功能的实现:

基本思路:
用radcombobox作为基本参照录入控件,用自己制作的参照按钮+RadWindowsManager组合成对应于 radcombobox 的即时编辑控件。实现效果如图:


(录入控件)


(弹出的档案编辑窗口)

技术难点:
弹出的编辑窗口关闭后,radcombobox 的参照内容必须即时刷新,但不能刷新整个页面(Ajax?)。

实现步骤:
1、按照常规使用 radcombobox 。
2、设计一个用户控件/自定义控件:
a.控件开始呈现为一个按扭,即上图中 radcombobox 右侧带“...”的按扭,最好根据 radcombobox 的各种Skin 绘制。
b.单击按钮可弹出编辑窗口。
c.该控件可与一个 radcombobox 关联(也可以不关联使用),当与 combobox 关联时,关闭编辑窗口后应即时刷新 radcombobox 的参照列表。
d.所有功能都在客户端(至少是表面上)完成。
e.控件具有的属性:关联 radcombobox 的ID,窗口的标题及高度、宽度,窗口中要显示的页面地址(NavigateUrl),按扭是否可见,面页加载时是否弹出窗口等。

关键代码:
1、控件中加入窗口关闭时的客户端脚本调用:
None.gif if  ( this .radComboBoxId  !=   null   &&   this .radComboBoxId.Length  >   0 )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
                
this.RadWindowManagerPlus.OnClientClose = string.Format("RadComoboBoxReload('{0}')", radComboBoxId);
ExpandedBlockEnd.gif}
2、客户端脚本:
None.gif function  RadComoboBoxReload(cmbId) // cmbId 为关联的 radcombobox 的 ID
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
if(!cmbId || cmbId.length == 0return;
InBlock.gif    
if(!window.tlrkComboBoxes) return;
InBlock.gif        
InBlock.gif    
var comboInstance = null;
InBlock.gif    
for(var i = 0; i < window.tlrkComboBoxes.length; i++)//获取 radcombobox 的实例
ExpandedSubBlockStart.gifContractedSubBlock.gif
    dot.gif{
InBlock.gif        
if(window.tlrkComboBoxes[i].ID == cmbId) 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            comboInstance 
= window.tlrkComboBoxes[i];
InBlock.gif            
break;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }
  
InBlock.gif    
InBlock.gif    
if(comboInstance)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        comboInstance.ClearItems();
//清除现有参照列表
InBlock.gif
        comboInstance.Ib(truenull);//重新加载参照列表
ExpandedSubBlockEnd.gif
    }

ExpandedBlockEnd.gif}

待完善功能:
1、可将 radcombobox 与上述控件合并后做成复合控件。好处:使用方便,避免了关联操作;坏处:导致上述控件无法单独使用。
2、如能在弹出窗口中加入“关闭”、“关闭并应用”、“取消”之类的按钮或许更加直观,“取消”关闭方式下不再刷新 radcombobox 。

转载于:https://www.cnblogs.com/chinadhf/archive/2007/04/16/715413.html

相关文章:

  • 2014年最新贷款计算器
  • 重游重邮
  • mysql互为主从配置(双主模型)
  • 关于自定义控件设计时如何把属性写入aspx中的研究(下)
  • 一位总工的痛苦,管理百人研发团队的烦恼
  • svn导入文件
  • security check 的链接错误
  • ASP.NET MVC 5 - 给电影表和模型添加新字段
  • 如何分析网页数据并且去除Html标签(C#)
  • win7下 启动virtualbox时 创建com对象失败 应用程序即将被中断 解决方案
  • 给DLL打上版本号
  • Activity生命周期
  • 加入域,找不到网络路径的解决办法
  • 跟你分享一下养生的经验
  • Java UDP 示例
  • android 一些 utils
  • IndexedDB
  • Laravel 实践之路: 数据库迁移与数据填充
  • LeetCode29.两数相除 JavaScript
  • Python学习之路16-使用API
  • React-生命周期杂记
  • Redis在Web项目中的应用与实践
  • scala基础语法(二)
  • SwizzleMethod 黑魔法
  • ubuntu 下nginx安装 并支持https协议
  • vuex 笔记整理
  • Webpack 4x 之路 ( 四 )
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端js -- this指向总结。
  • 前端性能优化--懒加载和预加载
  • 前端自动化解决方案
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 我感觉这是史上最牛的防sql注入方法类
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 移动端唤起键盘时取消position:fixed定位
  • Prometheus VS InfluxDB
  • #162 (Div. 2)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (七)Activiti-modeler中文支持
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四)JPA - JQPL 实现增删改查
  • (转)http协议
  • (转)创业家杂志:UCWEB天使第一步
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net Stream篇(六)
  • .NetCore部署微服务(二)
  • @开发者,一文搞懂什么是 C# 计时器!
  • [2010-8-30]
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [20170713] 无法访问SQL Server