微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态按钮 - 不进入事件处理函数

如何解决动态按钮 - 不进入事件处理函数

我在点击“searchbutton”后尝试创建动态按钮。但是我总是回到主页并且没有进入BtnBuy_ServerClick函数。 GetPostBackControl() - 如果没有找到控件,则返回 null,否则返回控件。

最后看按钮的添加和创建。

我很高兴在这个问题上有任何帮助。

谢谢!

public partial class HomePageDesignaspx : System.Web.UI.Page
{
        private static List<Button> buttonList;

        protected void Page_Load(object sender,EventArgs e)
        {
                if (buttonList != null)
                {
                    for (int i = 0; i < buttonList.Count(); i++)
                    {
                        buttonList[i].Click += new EventHandler(this.BtnBuy_ServerClick);
                    }
                }
                else
                {
                    buttonList = new List<Button>();
                }
            
                Control c = GetPostBackControl(Page);

                if (c != null && c.ID == "SearchBtn")
                {
                    DataBase db = DataBase.Instance;
                    flights = db.GetFlights(companyValue,sourceValue,destinationValue,date,minPriceS,maxPriceS);
                    
                    for (int i = 0; i < flights.Count; i++)
                    {
                        if (i % 3 == 0)
                        {
                            HtmlGenericControl drow = new HtmlGenericControl("div");
                            drow.ID = "drow" + i.ToString();
                            drow.Attributes.Add("class","row");
                            this.flightTable.Controls.Add(drow);
                        }

                        HtmlGenericControl dCol = new HtmlGenericControl("div");
                        dCol.ID = "dCol" + i.ToString();
                        dCol.Attributes.Add("class","col-sm-4");
                        this.flightTable.Controls.Add(dCol);

                        HtmlGenericControl dCard = new HtmlGenericControl("div");
                        dCard.ID = "dCard" + i.ToString();
                        dCard.Attributes.Add("class","card-section");
                        dCol.Controls.Add(dCard);

                        HtmlGenericControl dCardImg = new HtmlGenericControl("div");
                        dCardImg.ID = "dCardImg" + i.ToString();
                        dCardImg.Attributes.Add("class","card-section-image");
                        dCard.Controls.Add(dCardImg);

                        HtmlGenericControl CardImg = new HtmlGenericControl("img");
                        CardImg.ID = "CardImg" + i.ToString();
                        CardImg.Attributes.Add("src","../Images/plane2.jpg");
                        dCardImg.Controls.Add(CardImg);

                        HtmlGenericControl dCardDesc = new HtmlGenericControl("div");
                        dCardDesc.ID = "dCardDesc" + i.ToString();
                        dCardDesc.Attributes.Add("class","card-desc");
                        dCard.Controls.Add(dCardDesc);

                        HtmlGenericControl dCardTitle = new HtmlGenericControl("div");
                        dCardTitle.ID = "dCardTitle" + i.ToString();
                        dCardTitle.Attributes.Add("class","title");
                        dCardDesc.Controls.Add(dCardTitle);

                        HtmlGenericControl H5Title = new HtmlGenericControl("h5");
                        H5Title.ID = "H53Title" + i.ToString();
                        H5Title.Attributes.Add("class","card-desc");
                        H5Title.InnerText = "Num flight is " + flights[i].Id;
                        dCardTitle.Controls.Add(H5Title);

                        HtmlGenericControl dCardInfo = new HtmlGenericControl("div");
                        dCardInfo.ID = "dCardInfo" + i.ToString();
                        dCardInfo.Attributes.Add("class","card-info");
                        dCardDesc.Controls.Add(dCardInfo);

                        HtmlGenericControl UlList = new HtmlGenericControl("ul");
                        UlList.ID = "UlList" + i.ToString();
                        UlList.Attributes.Add("class","list-unstyle");
                        dCardInfo.Controls.Add(UlList);

                        HtmlGenericControl LiDate = new HtmlGenericControl("li");
                        LiDate.ID = "LiDate" + i.ToString();
                        UlList.Controls.Add(LiDate);

                        HtmlGenericControl iDate = new HtmlGenericControl("i");
                        iDate.ID = "iDate" + i.ToString();
                        iDate.Attributes.Add("class","far fa-calendar-alt");
                        LiDate.Controls.Add(iDate);

                        HtmlGenericControl LabelDate = new HtmlGenericControl("label");
                        LabelDate.ID = "LabelDate" + i.ToString();
                        LabelDate.InnerText = "Date: " + flights[i].DateFlight;
                        LiDate.Controls.Add(LabelDate);

                        HtmlGenericControl LiPlace = new HtmlGenericControl("li");
                        LiPlace.ID = "LiPlace" + i.ToString();
                        UlList.Controls.Add(LiPlace);

                        HtmlGenericControl iPlace = new HtmlGenericControl("i");
                        iPlace.ID = "iPlace" + i.ToString();
                        iPlace.Attributes.Add("class","fas fa-map-marker-alt");
                        LiPlace.Controls.Add(iPlace);

                        HtmlGenericControl LabelPlace = new HtmlGenericControl("label");
                        LabelPlace.ID = "LabelPlace" + i.ToString();
                        LabelPlace.InnerText = "Place: " + flights[i].source + "->" + flights[i].Destination;
                        LiPlace.Controls.Add(LabelPlace);

                        HtmlGenericControl LiPrice = new HtmlGenericControl("li");
                        LiPrice.ID = "LiPrice" + i.ToString();
                        UlList.Controls.Add(LiPrice);

                        HtmlGenericControl iPrice = new HtmlGenericControl("i");
                        iPrice.ID = "iPrice" + i.ToString();
                        iPrice.Attributes.Add("class","fas fa-hand-holding-usd");
                        LiPrice.Controls.Add(iPrice);

                        HtmlGenericControl LabelPrice = new HtmlGenericControl("label");
                        LabelPrice.ID = "LabelPrice" + i.ToString();
                        LabelPrice.InnerText = "Price: " + flights[i].Price;
                        LiPrice.Controls.Add(LabelPrice);

                        Button BtnBuy = new Button();
                        BtnBuy.ID = flights[i].Id;
                        BtnBuy.Attributes["class"] = "cart_btn btn btn-dark";
                        BtnBuy.Attributes.Add("type","submit");
                        BtnBuy.Text = "Buy Now";
                        buttonList.Add(BtnBuy);
                        BtnBuy.Click += new EventHandler(this.BtnBuy_ServerClick);
                        UlList.Controls.Add(BtnBuy);
                    }
                }
            }
        }
        
        void BtnBuy_ServerClick(object sender,EventArgs e)
        {
            string buttonId = ((HtmlButton)sender).ID;
            Session["IdFlight"] = buttonId;
            Server.Transfer("~/WebPage/BuyFlight.aspx");
        }

homePage.aspx 中的 ASPX 标记

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"  runat="server">
<section class="card">   
    <div class="row" id="flightTable" runat="server">          
        <!--Place for tickets after the search-->       
    </div>              
</section>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。