Ajax的 PopupControlExtener应用注意

1.PopupControlExtener 是 ASP.NET AJAX Control Toolkit 中的一个控件,它关联两个控件,以使点击另一个控件时在该控件的周边浮动显示另一个控件,像网页上常见的日期选择就属于这种。

'this._postBackSettings.async' is null or not an object

当关联一个按钮和一个 Panel 时容易遇到上述错误,解决办法是给按钮加上 UseSubmitBehavior="False" ,就不会出现该错误了。

如果按钮在 UpdatePanel 之外,一般应加上 OnClientClick="return false;"(此时可以不再设置 UseSubmitBehavior) 以避免回送后 PopupControl 不显示。

 

2.点击 PopupControlExtener 的 TargetControlID 对应的控件后,不出现 PopupControlID 对应的控件。

这是由于忘记给 PopupControlID 对应的控件设置样式表造成的。

应该给 PopupControlID 对应的控件设置 visibility:hidden; 样式表,注意是 visibility 属性,而不是 display 属性。

 

3.把 PopupControlExtener 即其 TargetControlID、PopupControlID 对应的控件放在 TabContainer 的 TabPanel 中后,PopupControlID 对应的控件位置不对,它显示在整个网页的左上端,而不是显示在 TargetControlID 对应的控件的四周。

这种有两个解决办法:

  • 一是可以给 TargetControlID 对应的控件加上 OnClientClick="return false;"。
  • 二是可以给 TabPanel 里面再套一层 div,给该 div 指定 position:relative;。

有时候如果 popupControlID 对应的控件需要回传,那么应该把二者结合起来使用。

 

4.点击 PopupControlID 对应的控件后,它不消失。

其实要让它消失,得用 PopupControlExtener 的 Commit 方法。具体用法是:

PopupControlExtener1.CommitProperty = "value";
PopupControlExtener1.Commit("选择");

当点击 PopupControlID 对应的控件中的某些按钮或其他控件时,触发一个方法,该方法执行上面的代码,于是 TargetControlID 对应的控件的 value 属性被设置成 Commit() 参数的值。

我个人觉得 PopupControlExtender 设计得并不好,它有两个属性 TargetControlID 和 PopupControlID,它认为 TargetControl 触发 PopupControl,然后 PopupControl 中的控件的方法再赋值给 TargetControl。但是实际运行中,我们可能是三个控件参与:一个专门用于存储或显示 PopupControl 的选择值,一个 TargetControl 用于触发 PopupControl 显示,还有一个 PopupControl。另外它的赋值和让控件消失是一个方法,即 Commit,也让人用起来不方便。

这种情况下,我们根本用不到 CommitProperty,根本不能把值赋给第一个控件,我们只是利用它和 Commit 方法来让 PopupControl 消失罢了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值