ASP.NET Web控件按钮事件加载无效。

来源:互联网 发布:淘宝店铺差评 编辑:程序博客网 时间:2024/06/07 16:32

很久不做ASP.NET 了,工作需要又捡起来,做一个toolbar,动态添加操作按钮。

   /// <summary>
        /// 初始化构造
        /// </summary> 
        public TKToolBar()
        {
            btnExprot = new Button();
            btnExprot.CommandName = BTN_EXPORT;          
            btnExprot.CssClass = "btn_dc";
                   

             btnExprot.Click += new EventHandler(btn_Click);
             }

  /// 统一处理按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

 if (btn.CommandName == BTN_EXPORT)
            {
                if (OnExportClick != null)
                {
                    OnExportClick(sender, e);
                }
            }

  }

  /// <summary>
        /// 控件呈现
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("<table width=\"" + this.Width + "\" border=\"0\" cellspace=\"0\" cellpadding=\"0\"><tr><td align=\"right\">");
           //导出按钮
            if (!string.IsNullOrEmpty(ButtonExportScript))
            {
                btnExprot.OnClientClick = ButtonExportScript;
            }

        if (ButtonExport && (!RightCtrl||(RightCtrl && PermissionRight.ExportEnable)))
            {
                btnExprot.RenderControl(writer);
            }

  }

上面代码执行时显示均正常,但是就是服务器端按钮事件无效,郁闷。

折腾了半天,原来是没有将按钮控件添加到控件集合中,

缺少 this.Controls.Add(btnExprot);这一句。

修改

/// <summary>
        /// 初始化构造
        /// </summary> 
        public TKToolBar()
        {
            btnExprot = new Button();
            btnExprot.CommandName = BTN_EXPORT;          
            btnExprot.CssClass = "btn_dc";
                   

             btnExprot.Click += new EventHandler(btn_Click);

          this.Controls.Add(btnExprot);
             }

就可以了,原因是,虽然呈现了按钮,但是由于控件树没有构建相互关系,按钮的事件无法进行向上冒泡。

属于低级失误,记于此

原创粉丝点击