簡體   English   中英

ImageButton第二次不觸發

[英]ImageButton not firing on the second time

在我的ASP.Net頁面中,我需要顯示一個HTML div,其中包含:圖像,文本,箭頭和連接器。

什么是我的“連接器”? 這是一個ImageButton,當用戶單擊此連接器時,HTML div顯示新內容。 此連接器用於在TreeView中導航。

但是我的問題是:我動態創建了所有連接器(以及所有HTML div內容)。 當用戶單擊第一個連接器時,HTML div將顯示新內容。 但是在第二個內容上,當用戶單擊連接器時:什么也沒有。 不會觸發ImageButton的Click事件。

這是我的連接器創建 (在PageLoad上,然后在每個連接器單擊上):

List<Connecteur> ListConnecteur = new List<Connecteur>();
        ListConnecteur = NomenclatureObj.SelectConnecteurs(DocId, ExterneData.RapidoBDDCnx);
        foreach (Connecteur CeConnecteur in ListConnecteur)
        {
            if (CeConnecteur.FK_docversion_suivant_id != 0)
            {
                ImageButton ImgBtnTmp = new ImageButton();
                ImgBtnTmp.Width = 30;
                ImgBtnTmp.Height = 30;
                ImgBtnTmp.ImageUrl = "~/images/GreenButton.png";
                ImgBtnTmp.Style.Add("left", CeConnecteur.position_x_pix.ToString() + "px");
                ImgBtnTmp.Style.Add("top", CeConnecteur.position_y_pix.ToString() + "px");
                ImgBtnTmp.Click += new ImageClickEventHandler(ImgBtnTmp_Click);
                ImgBtnTmp.CommandArgument = CeConnecteur.FK_docversion_suivant_id.ToString();
                ImgBtnTmp.Style.Add("position", "absolute");
                DivAffichage.Controls.Add(ImgBtnTmp);
                ImgBtnTmp.CausesValidation = true;
            }
        }

這是我的Connector OnClick

public void ImgBtnTmp_Click(object sender, EventArgs e)
    {
        ImageButton ThisBtn = sender as ImageButton;
        string CommandArg = ThisBtn.CommandArgument;
        int DocId = Convert.ToInt32(CommandArg);

        TREEVIEW_NIVEAU++;

        //DocId of the clicked connector
        Session["DocId"] = DocId;
        ClearDiv();
        LoadDiv(DocId);
    }

編輯1:我整個LoadDiv()函數

public void LoadDiv(int DocId)
    {
        #region Connecteurs
        List<Connecteur> ListConnecteur = new List<Connecteur>();
        ListConnecteur = NomenclatureObj.SelectConnecteurs(DocId, ExterneData.RapidoBDDCnx);
        foreach (Connecteur CeConnecteur in ListConnecteur)
        {
            if (CeConnecteur.FK_docversion_suivant_id != 0)
            {
                ImageButton ImgBtnTmp = new ImageButton();
                ImgBtnTmp.Width = 30;
                ImgBtnTmp.Height = 30;
                ImgBtnTmp.ImageUrl = "~/images/GreenButton.png";
                ImgBtnTmp.Style.Add("left", CeConnecteur.position_x_pix.ToString() + "px");
                ImgBtnTmp.Style.Add("top", CeConnecteur.position_y_pix.ToString() + "px");
                ImgBtnTmp.Click += new ImageClickEventHandler(ImgBtnTmp_Click);
                ImgBtnTmp.CommandArgument = CeConnecteur.FK_docversion_suivant_id.ToString();
                ImgBtnTmp.Style.Add("position", "absolute");
                DivAffichage.Controls.Add(ImgBtnTmp);
            }
        }
        #endregion

        #region Textes
        List<Texte> ListTexte = new List<Texte>();
        ListTexte = NomenclatureObj.SelectTextes(DocId, LANGUE_ID, ExterneData.RapidoBDDCnx);
        foreach (Texte CeTexte in ListTexte)
        {
            Label LblText = new Label();
            LblText.Text = CeTexte.contenu;
            LblText.Width = CeTexte.largeur_voulue_pix;
            LblText.Style.Add("left", CeTexte.position_x_pix.ToString() + "px");
            LblText.Style.Add("top", CeTexte.position_y_pix.ToString() + "px");
            LblText.Style.Add("position", "absolute");
            DivAffichage.Controls.Add(LblText);
        }
        #endregion

        #region Images
        List<ImageNomenclature> ListImg = new List<ImageNomenclature>();
        ListImg = NomenclatureObj.SelectImages(DocId, ExterneData.RapidoBDDCnx);
        foreach (ImageNomenclature CetteImage in ListImg)
        {
            Image ImgTmp = new Image();
            ImgTmp.ImageUrl = "~/Nomenclature/RAPIDO/planches/" + CetteImage.fichier_chemin;
            ImgTmp.Width = CetteImage.largeur_voulue_pix;
            ImgTmp.Height = CetteImage.hauteur_voulue_pix;
            ImgTmp.Style.Add("left", CetteImage.position_x_pix.ToString() + "px");
            ImgTmp.Style.Add("top", CetteImage.position_y_pix.ToString() + "px");
            ImgTmp.Style.Add("position", "absolute");
            ImgTmp.Style.Add("z-index", "-1");
            DivAffichage.Controls.Add(ImgTmp);
        }
        #endregion

        #region Flèches
        List<Fleche> ListFleche = new List<Fleche>();
        ListFleche = NomenclatureObj.SelectFleches(DocId, LANGUE_ID, ExterneData.RapidoBDDCnx);
        foreach (Fleche CetteFleche in ListFleche)
        {
            string HTMLCode = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\"><line x1=\"" + CetteFleche.position_x1_pix + "\" y1=\"" + CetteFleche.position_y1_pix + "\" x2=\"" + CetteFleche.position_x2_pix + "\" y2=\"" + CetteFleche.position_y2_pix + "\" stroke=\"#ff0000\"/></svg>";
            //DivAffichage.InnerHtml += HTMLCode;
        }
        #endregion
    }

如果要在Postback之后處理來自它們的事件,則應該每次在Page_InitPage_Load上創建動態控件。

有關詳細信息,請參見下面的鏈接:

在這里您可以看到相同的問題。

編輯

嘗試做這樣的事情:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        LoadDiv(Session["DocId"])
    }
}

暫無
暫無

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

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