2011-10-29 32 views
2

我已經在我的asp.net應用程序中使用jquery ajax動態加載用戶控件。ASP.Net/AJAX - 在asp.net中動態加載用戶控件後事件不會觸發用c#

除了用戶控件在頁面上加載一個asp.net鏈接按鈕之後,每件事都可以正常工作,而不會觸發單擊事件。鏈接按鈕不是動態加載的。

請幫我解決問題。

感謝

世斌V.M

HTML標記

註銷

更多

js的Web方法調用函數

function callRefinepopUpAjax(type, id) 
{  
    var panel_popup_layer = $('#id'); 
    var val; 
    if (Serach.hasOwnProperty(type)) 
     val = Serach[type]; 

    $.ajax({ 
     type: "POST", 
     url: "../ProfileSearchService.asmx/LoadRefinePopUp", 
     data: "{Type:'" + type + "',Value:'" + val + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 

      $(panel_popup_layer).html(msg.d); 
      setUp(); 
     } 

    });  
} 

Web方法

public string LoadRefinePopUp(string Type, string Value) 
{ 
    Page page = new Page(); 
    UserControl ctl = new UserControl(); 
    ArrayList list = new ArrayList(); 
    list.Add(Value); 
    Context.Items["WebForm1List"] = list; 
    try 
    { 
     ctl = 
      (UserControl)page.LoadControl("~//popup" + Type + ".ascx"); 



     HtmlForm form = new HtmlForm(); 


     form.Controls.Add(ctl); 
     page.Controls.Add(form); 

     StringWriter textWriter = new StringWriter(); 

     HttpContext.Current.Server.Execute(page, textWriter, false); 


     return CleanHtml(textWriter.ToString()); 
    } 
    catch (Exception ex) 
    { 

     return ex.toString(); 

    } 




} 

回答

0

你可以嘗試這樣的.....

注:這是一個例子.....如果您指定的用戶控件(代碼),那麼它將是有益的....

假設類型的名稱如下的文件的名稱,您可以在強類型那種類型,這樣,

var myUserControl = Page.LoadControl("~/View/EditScheduleProgram.ascx") as EditScheduleProgram; 

然後,你可以訪問任何自定義(或特定)由類型,但不Control暴露事件,因此,

myUserControl.MyEvent += MyEventHandler; 
0

我知道,這個問題在5年前問,但我今天來,並獲得股票與同樣的問題。也許我的回答可以幫助任何人。基於this article以這種方式創建用戶控件時無法觸發點擊事件。然後您可以依靠從客戶端處理的按鈕。如果您嘗試將您的用戶控件添加到您的頁面而不是動態添加頁面,則會觸發事件(check here

相關問題