2009-12-25 50 views
0

我不明白的是,我有一個pager_Create功能,它就是這樣Asp.net pager單擊事件不會觸發,它背後的邏輯是什麼?

public void createPager() 
{ 
    Div_Pager.Controls.Clear(); 

    ImageButton left = new ImageButton(); left.ID = "leftButton";// +new Random().Next(); 
    left.Click+=new ImageClickEventHandler(pager_Left_Click); 
    left.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/left.bmp"; 

    ImageButton right = new ImageButton(); right.ID = "rightButton";// +new Random().Next(); 
    right.Click+=new ImageClickEventHandler(pager_Right_Click); 
    right.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/right.bmp"; 

    Div_Pager.Controls.Add(left); 
    Div_Pager.Controls.Add(right); 

    if (int.Parse(ViewState["NOP"].ToString()) <= 1) // Number of Pages 
    { 
     Div_Pager.Visible = false; 
    } 
    else 
    { 
     Div_Pager.Visible = true; 
     if (int.Parse(ViewState["CurrentPage"].ToString()) <= 1) 
     { 
      left.Visible = false; 
     } 
     if (int.Parse(ViewState["CurrentPage"].ToString()) >= int.Parse(ViewState["NOP"].ToString())) 
     { 
      right.Visible = false; 
     } 
    } 
} 


protected void pager_Left_Click(object sender, EventArgs e) 
{ 
    ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) - 1; 

} 
protected void pager_Right_Click(object sender, EventArgs e) 
{ 
    ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) + 1; 

} 

什麼,我不明白這是怎麼走到這一步尋呼機按鈕不觸發?我的意思是我每次創建尋呼機時都會創建相同的按鈕。那麼怎麼可能。它與頁面渲染的關係是什麼?我的簡化代碼是這樣的:如果做

override Render() 
{ 
function1() 
} 
Page_Load() 
{ 
function1() 
} 
funtion1() 
{ 
createpager() 
} 

回答

1

你正在創建&重新創建動態控件,爲正常對照組事件綁定工作 是的Page_Load(),但不適用於動態創建的控件。

需要在PreInit創建動態控件(或至少的OnInit()&將事件附加有自身的動態控制,需要在每一個重新創建回發。

而且u鍵IDS需要有新的每時間, 像left.ID = "leftButton"+random_no.ToString();

下面是動態創建控件的最佳做法。

http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx

它的長篇文章,但plz直通。

相關問題