2014-01-20 5 views
0

프로그래밍 방식으로 웹 폼에 단추를 추가하려고합니다. 일부 작업 - 다른 작업은 수행하지 않습니다. 아래 코드에서 Page_Load에 btnY 및 btnX를 추가합니다. 이 두 가지 모두 작동합니다 - 페이지에 표시되고 이벤트 이 발생하고 이벤트 핸들러의 코드가 작동합니다. 페이지로드시 bindData를 실행하여 DataTable 을 가져 와서 데이터를 사용하여 컨트롤을 만듭니다. 이 예제에서는 버튼 만 만듭니다. 이 버튼은 페이지에 올바르게 표시되지만 클릭하면 단지 포스트 백을 수행합니다. 이벤트 핸들러의 코드가 작동하지 않습니다 - 호출됩니까? 이벤트 핸들러는 모든 버튼에서 동일합니다. 아이디어가 필요한 이유 또는 어떻게 해결할 수 있습니까?C# 프로그래밍 방식으로 단추 이벤트 추가

protected void Page_Load(object sender, EventArgs e) 
{ 
    PlaceHolder1.Controls.Add(btn("btnY", "Y")); 
    Pages P = new Pages(); 
    bindData(P.DT); 
    PlaceHolder1.Controls.Add(btn("btnX", "X")); 
} 
Button btn(string id, string text) 
{ 
    Button btn1 = new Button(); 
    btn1.ID = id; 
    btn1.Text = text; 
    btn1.Click += new System.EventHandler(this.btn_click); 
    return btn1; 
} 
protected void bindData(DataTable dt) 
{ 
    foreach (DataRow row in dt.Rows) 
    { 
     render(Convert.ToInt32(row["PageKey"])); 
    } 
} 
protected void render(int pageKey) 
{ 
    PlaceHolder1.Controls.Add(btn("btn_" + pageKey.ToString(), "Edit")); 
} 

protected void btn_click(object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
    string id = btn.ID; 
    Pages P = new Pages(); 
    bindData(P.DT); 
    lt.Text = "ID=" + id; 

} 
+1

당신의'BTN에 대한'이벤트 Handler' 추가 발생 '내부'Page_Load' – prograshid

+0

그냥 page_load에서 이것을 시도했습니다 ... 여전히 좋은 foreach (this.Controls에서 Control c) { if (c is Button) { Button b = (버튼) c; b.Click + = 새 System.EventHandler (this.btn_click); } } –

답변

0

결코 마음 ..이 .. 예를 들어 위의 작업을해야 그것을 파악, 내 실제 코드를 가진 경우 (! Page.PostBack) 문제