簡體   English   中英

Asp.net傳呼機click事件未觸發,其背后的邏輯是什么?

[英]Asp.net pager click event not firing , what is the logic behind it?

我不明白的是,我有一個pager_Create函數,就像這樣

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()
}

您正在創建和重新創建動態控件,對於普通控件,如果完成工作是Page_Load(),則事件綁定將起作用, 但對於動態創建的控件則無效。

您需要在PreInit中創建動態控件(或至少在OnInit()中創建&附加事件本身。動態控件需要在每次回發時重新創建。

同樣,每個按鈕的ID都需要每次更新,例如left.ID = "leftButton"+random_no.ToString();

這是動態創建控件的最佳實踐。

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

它的文章很長,但是請繼續閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM