简体   繁体   English

单击事件中的单击事件未触发

[英]click event inside a click event is not firing

the problem is that I have created a click event of link button category_Click and inside this click event I have created multiple dynamic controls and I created a click event of an image button Image_Click and now the issue is that the Category_Click event is firing but the Image_Click event is not firing.问题是我创建了链接按钮 category_Click 的单击事件,在此单击事件中我创建了多个动态控件,并创建了图像按钮 Image_Click 的单击事件,现在问题是 Category_Click 事件正在触发,但 Image_Click事件未触发。 please help me.请帮我。

aspx page code:- aspx 页面代码:-

<%@ Page Title="" Language="C#" MasterPageFile="~/Homepage.Master" AutoEventWireup="true" CodeBehind="Categories.aspx.cs" Inherits="WebApplication1.Categories" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <link rel="Stylesheet" href="Genre.css" />
     <link rel="Stylesheet" href="genre_content.css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="categories" runat="server">
    <asp:Panel ID="Panel2" runat="server"></asp:Panel>   
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="main" runat="server">
    <asp:Panel ID="Panel1" runat="server">
        <h2><asp:Label ID="Label1" class="h2" runat ="server" ></asp:Label></h2><br/>        
    </asp:Panel>
    <asp:Panel ID="Panel3" runat="server">
        <div class="data">          
                    <div class="image">
                        <asp:Image ID="Image1" runat="server" Cssclass="Img" />
                    </div>
                    <div class="description"> 
                        <asp:Label ID="Name" runat="server" class="name"></asp:Label>  
                        <asp:Label ID="Label2" runat="server" Text="(Paperback)"></asp:Label>
                        <div class="cos-shipping">
                            <div class="cos">
                                 Rs.<asp:Label ID="cost" runat="server" CssClass="co" ></asp:Label>
                            </div>                          
                            <div class="shipping">
                             <p>Available</p>
                            <p>Ships within <b>4-6 Business Days</b></p>
                            <p>Rs.39 shipping in India per item and low cost Worldwide.</p>
                            </div>                            
                        </div>                        
                        <asp:Button ID="Button1" runat="server" Text="Buy Now" class="atc"/>
                     </div>                   
     </div>    
     <div class="details">
         <h2>Book Details</h2>
                        <asp:Label ID="about" runat="server" CssClass="about" ></asp:Label> 
                        <p>Author: <asp:Label ID="author" runat="server" ></asp:Label>   </p>   
                        <p>ISBN: <asp:Label ID="isbn" runat="server" ></asp:Label>     </p>                      
                        <p>Pubisher: <asp:Label ID="publisher" runat="server" ></asp:Label>  </p>
                        <p>No of pages: <asp:Label ID="nop" runat="server" ></asp:Label>           </p>
                        <p>Language: <asp:Label ID="language" runat="server" ></asp:Label>  </p>     
                        <p>Weight: <asp:Label ID="weight" runat="server" ></asp:Label>      </p>
                        <p>Available For :<asp:Label ID="available" runat="server" ></asp:Label>   </p>  
      </div>
    </asp:Panel>
</asp:Content>

aspx.cs page code:- aspx.cs 页面代码:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    public partial class Categories : System.Web.UI.Page
    {
        private string ide, SQL, SQL2, label;
        private int num, i, num2, j;
        private ImageButton image;
        private LinkButton bookname;
        private Label money;
        private Label id;
        private Button wishlist;
        private LinkButton category;
        private static DataSet ds, ds2;
        private static SqlDataAdapter da, da2;
        private static HtmlGenericControl Book;
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

        protected void Page_Load(object sender, EventArgs e)
        {
                Panel3.Visible = false;
                con2.Open();
                SQL2 = "Select distinct Book_category from Book_List";
                da2 = new SqlDataAdapter(SQL2, con2);
                ds2 = new DataSet();
                DataTable dt2 = new DataTable();
                da2.Fill(ds2);
                num2 = ds2.Tables[0].Rows.Count;
                HtmlGenericControl header = new HtmlGenericControl("div");
                header.Attributes.Add("class", "header");
                Panel2.Controls.Add(header);
                for (j = 0; j < num2; j++)
                {
                    category = new LinkButton();
                    category.Text = ds2.Tables[0].Rows[j]["Book_category"].ToString();
                    category.Attributes.Add("runat", "server");
                    category.Attributes.Add("CausesValidation", "false");
                    category.Click += new EventHandler(Category_Click);
                    header.Controls.Add(category);
                }
        }
        protected void Category_Click(object sender, EventArgs e)
        {
            label = ((LinkButton)sender).Text;
            Label1.Text = label;
            con.Open();
            SQL = "Select * from Book_List where Book_category='" + label + "'";
            da = new SqlDataAdapter(SQL, con);
            ds = new DataSet();
            da.Fill(ds);
            num = ds.Tables[0].Rows.Count;
            //creating div element and putting all the elements ina  div called books
            Book = new HtmlGenericControl("div");
            Book.Attributes.Add("class", "books");
            Panel1.Controls.Add(Book);
            for (i = 0; i < num; i++)
            {
                //creating div element
                HtmlGenericControl myDiv = new HtmlGenericControl("div");
                myDiv.Attributes.Add("class", "myDiv");
                //creating image button
                image = new ImageButton();
                image.ImageUrl = ds.Tables[0].Rows[i]["Book_image"].ToString();
                image.CssClass = "Img";
                image.Attributes.Add("runat", "server");
                //image.UseSubmitBehaviour = false;
                image.Attributes.Add("CausesValidation", "false");
                //image.Attributes.Add("OnClick", "image_Click");
                //image.OnClientClick = Panel3;
               image.Click += new ImageClickEventHandler(Image_Click);
                //creating div inside myDiv
                HtmlGenericControl content = new HtmlGenericControl("div");
                content.Attributes.Add("class", "content");
                //creating a label to display id
                id = new Label();
                id.CssClass = "id";
                id.Text = ds.Tables[0].Rows[i]["Book_id"].ToString();
                id.Attributes.Add("runat", "server");
                //id.Click += new ImageClickEventHandler(id_Click);
                //creating a label for displaying name of the book
                bookname = new LinkButton();
                bookname.CssClass = "name";
                bookname.Text = ds.Tables[0].Rows[i]["Book_name"].ToString();
                bookname.Attributes.Add("runat", "server");
                //bookname.Click += new EventHandler(bookname_Click);
                //creating a label for displaying cost of the book
                money = new Label();
                money.CssClass = "cost";
                money.Text = "<br/> Rs " + ds.Tables[0].Rows[i]["Book_cost"].ToString();
                money.Attributes.Add("runat", "server");
                //creating a button to add the book to the wishlist
                wishlist = new Button();
                wishlist.Attributes.Add("runat", "server");
                wishlist.CssClass = "wishlist";
                wishlist.Text = "ADD TO WISHLIST";
                Book.Controls.Add(myDiv);
                myDiv.Controls.Add(image);
                myDiv.Controls.Add(content);
                content.Controls.Add(id);
                content.Controls.Add(bookname);
                content.Controls.Add(money);
                content.Controls.Add(wishlist);
            }
        }
        protected void Image_Click(object sender, ImageClickEventArgs e)
        {
            Panel3.Visible = true;
            Panel2.Visible = false;
            //ImageButton image = sender as ImageButton;
            //Response.Redirect("genre_content.aspx");           
            ide = ((ImageButton)sender).ImageUrl;
            for (i = 0; i < num; i++)
            {
                if (ide == ds.Tables[0].Rows[i]["Book_image"].ToString())
                {
                    Session["name"] = ds.Tables[0].Rows[i]["Book_name"].ToString();
                    Session["image"] = ds.Tables[0].Rows[i]["Book_image"].ToString();
                    Session["cost"] = ds.Tables[0].Rows[i]["Book_cost"].ToString();
                    Session["isbn"] = ds.Tables[0].Rows[i]["Book_isbn_no"].ToString();
                    Session["weight"] = ds.Tables[0].Rows[i]["Book_weight"].ToString();
                    Session["author"] = ds.Tables[0].Rows[i]["Book_author"].ToString();
                    Session["about"] = ds.Tables[0].Rows[i]["Book_about"].ToString();
                    Session["publisher"] = ds.Tables[0].Rows[i]["Book_publisher"].ToString();
                    Session["nop"] = ds.Tables[0].Rows[i]["No_of_pages"].ToString();
                    Session["language"] = ds.Tables[0].Rows[i]["Book_language"].ToString();
                    Session["available"] = ds.Tables[0].Rows[i]["Available_for"].ToString();
                }
            }
            Image1.ImageUrl = Session["image"].ToString();
            Name.Text = Session["name"].ToString();
            about.Text = Session["about"].ToString();
            cost.Text = Session["cost"].ToString();
            author.Text = Session["author"].ToString();
            isbn.Text = Session["isbn"].ToString();
            publisher.Text = Session["publisher"].ToString();
            nop.Text = Session["nop"].ToString();
            language.Text = Session["language"].ToString();
            weight.Text = Session["weight"].ToString();
            available.Text = Session["available"].ToString();
        }
    }
}
    

Your problem is that you dynamicly add the button to your form.您的问题是您将按钮动态添加到表单中。 If the postback then comes back, your page has no idea about the button because it gets created in your page_load.如果回发然后回来,您的页面不知道该按钮,因为它是在您的 page_load 中创建的。

You should look into using a gridview or simular control for keeping lists.您应该考虑使用 gridview 或类似控件来保存列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM