问题描述
做了一个动态创建Button的用户控件,测试时发现按钮可以正常生成,但是绑定在其上的Click事件却无法触发。折腾了很久,发现只要我给Button的ID赋值,那么Click事件就无法触发,不知道是什么问题,望指教。publicpartialclassOperatorButton:System.Web.UI.UserControl{privateList<OperatorCommand>m_OperatorCommand=newList<OperatorCommand>();publiceventEventHandler<OperatorButtonEventArgs>OperatorClick;privatevoidLoadButton(){m_OperatorCommand.Add(OperatorCommand.New);m_OperatorCommand.Add(OperatorCommand.Update);m_OperatorCommand.Add(OperatorCommand.Delete);CreateAuthorizedOperator();}protectedvoidPage_Load(objectsender,EventArgse){LoadButton();}privatevoidCreateAuthorizedOperator(){stringurl=this.Page.Request.Url.AbsolutePath;if(m_OperatorCommand.Count>0)this.PlaceHolder1.Controls.Clear();foreach(OperatorCommandcmdinm_OperatorCommand){objectobj=null;OperatorCommandnewCmd=cmd;obj=CreateButton(Guid.NewGuid().ToString(),cmd.ToString());if(objisIButtonControl){((IButtonControl)obj).Click+=(sender,e)=>{OnOperatorClick(sender,newCmd);};}Literalspace=newLiteral();space.Text="";if(this.PlaceHolder1.Controls.Count>0)this.PlaceHolder1.Controls.Add(space);this.PlaceHolder1.Controls.Add((Control)obj);}}publicvoidOnOperatorClick(objectsender,OperatorCommandcmd){if(OperatorClick!=null)OperatorClick(sender,newOperatorButtonEventArgs(cmd));}protectedvirtualobjectCreateButton(stringid,stringtext){Buttonbutton=newButton();//怪异之处:如果对ID进行了赋值,那么button的Click时间无法触发。如果不赋值就可以触发,不明白!!!!//button.ID=Guid.NewGuid().ToString();button.Text=text;button.CommandArgument=text;returnbutton;}}publicclassOperatorButtonEventArgs:EventArgs{publicOperatorButtonEventArgs(OperatorCommandcmd){Command=cmd;}publicOperatorCommandCommand{get;set;}}
解决方案
本帖最后由 PCI_E 于 2015-04-17 17:23:34 编辑