如何解决动态按钮 - 不进入事件处理函数
我在点击“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 举报,一经查实,本站将立刻删除。