我目前正在開發一個web應用程序並創建一些自定義控件。我創建了一個自定義的「模式按鈕」,它繼承自Web控件和INamingContainer,控件使用emebedded資源註冊客戶端代碼(FancyBox jQuery),模式按鈕在模式中顯示Iframe,並且可以正常工作Default.aspx頁面。用jquery自定義控件,接下來要做什麼?
問題:
我都試過,不過模式彈出未能回發聲明另一個頁面上的其他「模式按鈕」控件。我研究了這個錯誤,發現_DoPostBack沒有在這個頁面上生成。因此我添加了這個方法:this.Page.ClientScript.GetPostBackClientHyperlink(this,「」);.這會生成_doPostBack函數並導致回發,但是模式未能第二次打開!
繼承人我的客戶端腳本多數民衆贊成在我的自定義控制方法覆蓋的CreateChildControls()產生:
// http://fancybox.net/
StringBuilder jQueryInclude = new StringBuilder();
jQueryInclude.Append("$(document).ready(function() { ");
// Uses ".class" selector
jQueryInclude.AppendFormat("$('.{0}').fancybox(", this.ModalViewID);
jQueryInclude.Append(" { ");
jQueryInclude.Append(" 'titlePosition': 'outside',");
jQueryInclude.Append(" 'modal': 'true', ");
jQueryInclude.Append(" 'transitionIn': 'elastic', ");
jQueryInclude.Append(" 'transitionOut': 'fade', ");
jQueryInclude.Append(" }); ");
jQueryInclude.Append("});");
var closeMethod = String.Format("{0}_CloseDialog()", close.ClientID);
jQueryInclude.Append(" function METHOD_NAME { ").Replace("METHOD_NAME", closeMethod);
jQueryInclude.Append(" $.fancybox.close(); ");
jQueryInclude.AppendFormat(" __doPostBack('<%= {0} %>', '')", close.ClientID); // Postback on close to reload iframe
jQueryInclude.Append(" } ");
close.OnClientClick = closeMethod;
//user preference else all modals will be same
Page.ClientScript.RegisterClientScriptBlock(typeof(ModalButton), String.Format("{0}_fancyBox", this.ModalViewID), jQueryInclude.ToString(), true);
我需要知道:
如何確保這個自定義「modalbutton」生成_doPostBack功能當它被重新發布時也會再次打開。因此
在此先感謝