2012-03-15 149 views
1

我知道這個問題被問了很多次,但還是我的問題不解決,添加用戶動態控制在ASP.NET

我試圖遍歷對象的列表上,並填寫模板「用戶控制「該對象, 就像搜索的結果列表一樣。

在這些用戶控件中有一個linkBut​​ton應該重定向到另一個頁面,當我點擊該鏈接按鈕時什麼也沒有發生,我用google搜索但沒有滿意的答案。

這裏是代碼,我會用按鈕,而不是用戶控制說明:

protected override void OnInit(EventsArgs e) 
{ 
    for(int i=0;i<10;i=i+1) 
    { 
     Button b = new Button(); 
     b.ID = "Button" + i; 
     b.Click += new System.EventHAndler(this.Button_OnClick); 
     Controls.Add(b); 
    } 
base.OnInit(e); 
} 

private void Button_OnClick(object Sender,System.EventsArgs e) 
{ 
    Response.Redirect("~/Some.aspx"); 
} 

public override void VerifyRenderingInServerForm(Control control) 
{ 
    return; 
} 

它永遠不會調用Button_OnClick方法。

在此先感謝。

+0

我沒有看到你的示例有什麼問題,你能發佈實際的代碼嗎? – 2012-03-15 10:48:56

+0

我剛剛編輯了代碼,這就是我現在擁有的,我希望新按鈕能夠觸發事件。我正在使用VerifyRenderingInServerForm方法,否則會出現錯誤。 – user1210877 2012-03-15 11:01:25

回答

2

按鈕將永遠不會觸發因爲不是服務器表單控件的孩子。

如果沒有表單控件的是,你需要添加它:

<form id="form1" runat="server"> 
</form> 

而更換

Controls.Add(b); 

隨着

form1.Controls.Add(b); 
+0

我應該在哪裏放置

?在之後或之前? – user1210877 2012-03-15 11:22:00

+0

在body標籤中,標記(.aspx文件) – 2012-03-15 11:22:54

+0

它正在工作:)非常感謝,我正在努力三天。 – user1210877 2012-03-15 11:26:11

0

試試這個

for (int i = 0; i < 10; i = i + 1) 
{ 
    Button b = new Button(); 
    b.ID = "Button" + i; 
    b.Click += new EventHandler(b_Click); 
    Controls.Add(b); 
} 

void b_Click(object sender, EventArgs e) 
{ 
    //some code 
} 
+0

是的,我已經這樣做了,但它永遠不會達到這個方法。 – user1210877 2012-03-15 10:50:20

0

使用Page_Init代替的OnInit。

在創建按鈕之前調用base.OnInit也可能起作用。