开发ASP.Net服务器复合控件时
(-)如果用的是撰写不是呈现的话,如:
protected override void CreateChildControls()
{
...
Button button1 = new Button();
button1.text = "b1";
Controls.Add(button1);
Button button2 = new Button();
button2.text = "b2";
Controls.Add(button2);
...
}
那么,如何调用IPostBackEventHandler接口方法RaisePostBackEvent呢?
感觉上不行,因为Button控件没有对应的可以赋值的Name来记录UniqueID,这样应该不会找到对应的回发事件处理吧。
PS:当然,除了直接连接Button的Click事件的解决办法情形:
...
Button button1 = new Button();
button1.text = "b1";
// button1Click可以跟对应的公开事件连接。
button1.Click = new EventHandler(button1Click);
Controls.Add(button1);
...
(二)如果用呈现逻辑+事件冒泡的话,如:
protected override void Render(HtmlTextWriter writer)
{
...
// Submit
writer.AddAttribute(HtmlTextWriterAttribute.Type, "Submit");
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value,"Submit");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
// Click
writer.AddAttribute(HtmlTextWriterAttribute.Type, "Submit");
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value,"Click");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
...
}
如果仅仅是依靠捕捉回发处理的话如何对两个按钮区别。
(三)总之,我觉得不是无理取闹,只是想更清楚事件冒泡和事件回发处理的深入一些的分析。所以,我把这个装进空瓶子。
protected override void CreateChildControls()
{
...
Button button1 = new Button();
button1.text = "b1";
Controls.Add(button1);
Button button2 = new Button();
button2.text = "b2";
Controls.Add(button2);
...
}
那么,如何调用IPostBackEventHandler接口方法RaisePostBackEvent呢?
感觉上不行,因为Button控件没有对应的可以赋值的Name来记录UniqueID,这样应该不会找到对应的回发事件处理吧。
PS:当然,除了直接连接Button的Click事件的解决办法情形:
...
Button button1 = new Button();
button1.text = "b1";
// button1Click可以跟对应的公开事件连接。
button1.Click = new EventHandler(button1Click);
Controls.Add(button1);
...
(二)如果用呈现逻辑+事件冒泡的话,如:
protected override void Render(HtmlTextWriter writer)
{
...
// Submit
writer.AddAttribute(HtmlTextWriterAttribute.Type, "Submit");
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value,"Submit");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
// Click
writer.AddAttribute(HtmlTextWriterAttribute.Type, "Submit");
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value,"Click");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
...
}
如果仅仅是依靠捕捉回发处理的话如何对两个按钮区别。
(三)总之,我觉得不是无理取闹,只是想更清楚事件冒泡和事件回发处理的深入一些的分析。所以,我把这个装进空瓶子。