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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值