Ajax ToolKit --- ModelPopupExtender应用经验二则

目录:
    有关于ModelPopupExtender应用(Open ModalPopup dialog on Page load
    有关于ModelPopupExtender如何触发服务端事件

1.有关于ModelPopupExtender应用
<form id="Form1" runat="server">
        
<ajaxToolkit:ToolkitScriptManager runat="server" ID="ToolkitScriptManager" />
        
<div>
            
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" BehaviorID="mdlPopup" runat="server"
                TargetControlID
="btnNo" PopupControlID="pnlPopup" OkControlID="btnYes" BackgroundCssClass="modalBackground" />
            
<asp:Panel ID="pnlPopup" runat="server" CssClass="confirm-dialog" Style="display: none;">
                
<div class="inner">
                    
<h2>
                        Show Wow
!</h2>
                    
<div class="base">
                        
<asp:Button ID="btnYes" runat="server" Text="Yes" />
                        
<asp:Button ID="btnNo" runat="server" Text="No" OnClientClick="$find('mdlPopup').hide(); return false;" />
                        
<asp:LinkButton ID="LinkButton1" runat="server" CssClass="close" OnClientClick="$find('mdlPopup').hide(); return false;" />
                    
</div>
                
</div>
            
</asp:Panel>
        
</div>
    
</form>

    
<script type="text/javascript">   
//Page_Load Invoke          

           Sys.Application.add_load(function() 
            

               $find(
'mdlPopup'
).show();
            }
);
    
</script>
截图:

相关问题地址:
关于使用ajaxToolkit

2. 有关于ModelPopupExtender如何触发服务端事件
    触发服务端事件,大家一看就知道,很简单,直接写事件即可,那为什么在这里又要写这个呢?那个因为我在用AJAX,开发时,发现只要ModelPopupExtender中TargetControlID关联“修改”按钮的Id,之后。然后在运行界面时,点击“修改”按钮是不会触发Button的OnClick事件的。
    
 <asp:Button ID="btnFixTheme" runat="server" Text="修改" OnClick="btnFixTheme_Click" />
 
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" BehaviorID="mdlPopup" runat="server" TargetControlID="btnFixTheme"  PopupControlID="pnlPopup" Drag="true" BackgroundCssClass="modalBackground" />

     为什么会这样呢?
     答:那是因为ajax server control render一个有异步通信功能的代码,并没有在触发这个事件的按钮更改任何的代码,还是原来的__doPostBack('','')回发方式。ajax core part 会托管这个__doPostBack。而对于ajax control toolkit,则是在初始化whole client page时执行一段代码然后动态的给绑定的控件加入触发的代码。所以你也看不到例如一个LinkButton触发事件的变化。

   解决代码:
 protected void Page_Load(object  sender, EventArgs e)
        
{
            btnFixTheme.OnClientClick 
= "__doPostBack('" + this.btnFixTheme.UniqueID + "','')"
;
}

另外:附一点
   如何动态添加trigger到updatePanel?
private  MethodInfo triggerInitMethod  =   typeof (UpdatePanelTrigger).GetMethod( " Initialize " , BindingFlags.NonPublic  |  BindingFlags.Instance);


        
/**/ /// <summary>
        
/// 动态加载Button's Trigger
        
/// </summary>

         internal   void  DynamicRegisterTrigger()
        
{
            AsyncPostBackTrigger trigger 
= new AsyncPostBackTrigger();
            trigger.ControlID 
= "btSubmit";

            upPriceInfo.Triggers.Add(trigger);

            
if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
            
{
                triggerInitMethod.Invoke(trigger, 
null);
            }

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值