用于弹出ModalDialog进行数据选择的控件

过去webform程序常需弹出窗口选数据,情况多样。作者写了复合控件通用处理,包含显示文字和存放真实值的TextBox及Image按钮。按钮点击调用js函数弹出ModalDialog,选择数据后赋值,示例代码展示了部分处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过去写的webform程序,  很多地方需要弹出一个窗口进行数据选择.  最简单的情况是选择了弹出窗口某条数据后直接修改某个html元素的值, 麻烦一点的就是数据库可能保存的是被选择记录的id, 所以除了有用于显示文字的textbox, 还要有一个用来存放id的hidden. 更恐怖的就是选了一条记录后, 还要根据这条记录填充多个html元素的值. 最近写了个控件, 能比较通用的处理这些情况. 

这是一个复合控件, 里面包含了一个用来显示文字的TextBox(Text对应控件Text属性), 一个用来存放幕后真实值的隐藏的TextBox(Text对应控件的Value属性), 和一个用Image做成的按钮. 

按钮被点击后, 将会调用负责弹出ModalDialog的js函数, 这个函数由ClientOnClick属性指定.  然后这个函数则要根据实际需要去写.  对ModalDialog的要求是, 点击某条记录后应该返回一个包含所需属性的自定义的js对象, 对打开ModalDialog的函数要求是, 第一个参数是传入用于显示文字的TextBox的id, 第二个是hidden的Id.  如果有需要的话可以有更多参数, 在控件的ClientOnClickParams属性以,param1,param2...的形式传入. 用showModalDioalog函数打开用于选择数据的窗口并选择数据后, 给显示文字TextBox和hidden赋需要的值, 最后函数返回ModalDialog的返回值. 在下面的示例函数里虽然只处理了name和id属性, 但ModalDialog可以返回更多信息( 例如sex, birthday属性), 留给ClientAfterClick属性指定的js函数去处理. 示例代码中用了setControls函数读取sex, birthday并把他们填入相应的TextBox 

function openTestWindow(displayId, valueId, more) { 
    var popUp; 
    var offsetTop = document.getElementById(displayId).offsetTop; 
    var offsetLeft = document.getElementById(displayId).offsetLeft; 
    var parentElement = document.getElementById(displayId).offsetParent; 
    while (parentElement) { 
        offsetTop += parentElement.offsetTop; 
        offsetLeft += parentElement.offsetLeft; 
        parentElement = parentElement.offsetParent; 
    } 
    offsetLeft += window.screenLeft - document.body.scrollLeft ; 
    offsetTop += window.screenTop  + document.getElementById(displayId).offsetHeight - document.body.scrollTop; 
    if (!more) { 
        url = '/dialogs/SelectPerson.aspx'; 
    } 
    else { 
        url = '/dialogs/SelectPerson.aspx?morePerson=' + more; 
    } 
    url = applicationPath + url; 
    popUp = window.showModalDialog(url,  
        [window],  
        'dialogWidth:300px;dialogHeight:300px;status:0;dialogLeft:' + offsetLeft + ';dialogTop:' + offsetTop ) ; 
    if (popUp != null) { 
        document.getElementById(displayId).value = popUp.name; 
        document.getElementById(valueId).value = popUp.id; 
        return popUp; 
    } 

 
控件  示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值