2011-12-23 3 views
2
using System; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 20; i++) 
     { 

      Button bt = new Button(); 
      bt.Text = ""+i; 
      bt.Click += new EventHandler(bt_Click); 
      Panel1.Controls.Add(bt); 

     }  
    } 

    public void bt_Click(object sender, EventArgs e) 
    { 
     Button selected = sender as Button; 
     Panel1.Visible = false; 
     Label lbl = new Label(); 
     lbl.Text = "i am lable"; 
     Panel2.Controls.Add(lbl); 
     for (int i = 1; i < 30; i++) 
     {     
      Button pb = new Button();  
      pb.Text = selected.Text;  
      pb.Click += new EventHandler(pb_Click);        
      Panel2.Controls.Add(pb);    
     } 
    } 

    public void pb_Click(object sender, EventArgs e) // how to trigger it 
    { 
     Response.Redirect("http://www.google.com"); 
    }   
} 

이 pb_Click은 (는) Triggring이 아닙니다. 그래서 어떤 생각이든하위 동적 링크가 트리거되지 않음

답변

3

분명히 pb_Click는 실행되지 않습니다. bt_Click 핸들러에 컨트롤 (버튼)을 추가하면 다음 제출시 삭제됩니다. 컨트롤을 동적으로 추가하려면 Page_Load 이벤트를 사용해야합니다. 당신은 다음과 같은 코드를 설계/쓸 수 있습니다

: (트릭)

protected void Page_Load(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 20; i++) 
     { 

      Button bt = new Button(); 
      bt.Text = "" + i; 
      bt.ID = "btn" + i; // Assign unique ID 
      bt.Click += new EventHandler(bt_Click); 
      Panel1.Controls.Add(bt); 
     } 
     AddButtons(); 
    } 

    public void bt_Click(object sender, EventArgs e) 
    { 
     ViewState["btnId"] = (sender as Button).ID ; 
     AddButtons(); 
    } 

    public void AddButtons() 
    { 
     if (ViewState["btnId"] == null) 
      return; 
     Button selected = Panel1.FindControl(ViewState["btnId"].ToString()) as Button; 

     Panel1.Visible = false; 
     Label lbl = new Label(); 
     lbl.Text = "i am lable"; 
     Panel2.Controls.Add(lbl); 
     for (int i = 1; i < 30; i++) 
     { 

      Button pb = new Button(); 

      pb.Text = selected.Text; 

      pb.Click += new EventHandler(pb_Click); 
      Panel2.Controls.Add(pb); 

     } 
    } 
+0

탱크 맨이게 정말 도움이 되네. 나는 이걸 다른 기능으로 추가하려했지만 이벤트를 추적 할 수 없었다. 고마워요 많이 – user1111351

+0

안녕하세요, 나는 또한 하나의 추가 문제에 직면하고있다 또한 ine 텍스트 상자를 추가 버튼을 만들었습니다. 그리고 속성을 visible = false로 설정했습니다. 이제 나는 그것을 visible = true로 수정하려하고있다. 어떻게이 텍스트 박스 값에 접근 하는가? – user1111351

1

당신은 후 Page_Init 방법에 버튼을 추가해야하고 버튼 클릭이나를 Page_Load 방법에 추가하지 않습니다.

관련 문제