我在webcontrol里加了一个按钮,然后希望这个按钮的click事件在webcontrol里来处理,本来是件很容易的事,但是click事件根本就没有响应,但是页面还是会刷新的.以下是代码,请大家多多指教                browerButton.Click += new EventHandler(browerButton_Click); void browerButton_Click(object sender, EventArgs e)
        {
.........
        }

解决方案 »

  1.   

    请问你的webcontrol是动态添加的吗?如果是要在服务器端重新添加一次,服务器会在postback时重建现场。
      

  2.   

    ASP.NET的按钮生命周期是PostBack后先重新构建页面,页面构建完后才执行按钮事件,
    还有如果你是动态添加的控件的话,一定要对你需要操作的控件的ID赋值
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace Unidefine.Model
    {
        /// <summary>
        /// 商品图片列表
        /// </summary>
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:ImageList runat=server></{0}:ImageList>")]
        public class ImageList : WebControl
        {
            private Product productInfo;
            delegate void DeleteImage(string imageName);
            private List<string> changedImageList = new List<string>();
            
            public List<string> ChangedImageList
            {
                get { return changedImageList; }
            }
            
            public Product ProductInfo
            {
                get { return productInfo; }
                set { productInfo = value; }
            }       
            protected override void CreateChildControls()
            {
               
                int imageNum = productInfo.images.Length;            for (int i = 0; i < imageNum; i++)
                {
                    string imagePath = productInfo.images[i];
                    Image image = new Image();
                    image.ImageUrl = "images\\" + imagePath;
                    image.ID = "image" + i.ToString();
                    CheckBox checkBox = new CheckBox();
                    checkBox.Text = "更改图片 ";
                    checkBox.ID = "checkBox" + i.ToString();
                    TextBox imageTextBox = new TextBox();
                    imageTextBox.Text = imagePath;
                    imageTextBox.ID = "imageTextBox" + i.ToString();
                    Button browerButton = new Button();
                    browerButton.ID = "browerButton" + i.ToString();
                    browerButton.Text = "浏览....";
                    Button deleteButton = new Button();
                    deleteButton.ID = "deleteButton" + i.ToString();
                    deleteButton.Text = "删除";
                    checkBox.CheckedChanged += new EventHandler(     checkBox_CheckedChanged);
                    checkBox.AutoPostBack = true;
                    browerButton.Click += new EventHandler(browerButton_Click);
                    Controls.Add(image);
                    Controls.Add(checkBox);
                    Controls.Add(imageTextBox);
                    Controls.Add(browerButton);
                    Controls.Add(deleteButton);
                }
           
                base.CreateChildControls();
            }        void browerButton_Click(object sender, EventArgs e)
            {
                Page.Response.Write("<script language=javascript> window.alert('按钮');</script>");
            }        void checkBox_CheckedChanged(object sender, EventArgs e)
            {
                Page. Response.Write("<script language=javascript> window.alert('按钮');</script>");
            }
            
            /// <summary>
            /// Render the contents
            /// </summary>
            /// <param name="output">output</param>
            protected override void RenderContents(HtmlTextWriter output)
            {
                base.RenderContents(output);
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="e"></param>
            protected override void OnPreRender(EventArgs e)
            {
                base.OnPreRender(e);
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="writer"></param>
            protected override void Render(HtmlTextWriter writer) 
            {
                base.Render(writer);
            }
        }
    }