我为ASP.Net创建了一个servercontrol。因为短而精确我 只列出我做的事情:
(1)在OnInit中调用EnsureChildControls
(2)在CreateChildControls中创建一个动态表:
Table aTable = new Table();
aTable.ID = this.ID + "$" + T;
TableRow aRow = new TableRow();
aRow.ID = aTable.ID + "$R" + <COUNTER>.ToString();
TableCell aCell = new TableCell();
createLinkButton(row, col, caption, aCell, aRow.ID);
this.Controls.Add(aTable);
(3)具有如下功能:
void aLinkButton_Command(object sender, CommandEventArgs e)
{
// Some stuff
return;
}
(4)具有如下功能:
void createLinkButton(int row, int col, string caption, TableCell aCell, string baseID) {
LinkButton lb = new LinkButton();
lb.ID = baseID + "$" + row.ToString() + col.ToString();
lb.Command += new CommandEventHandler(aLinkButton_Command);
lb.Text = caption;
lb.CommandName = "<command>";
aCell.Controls.Add(lb);
return;
}
但是:事件从未被调用过。 href用于回发,但有线事件永远不会被触发。
不再有任何想法:(
任何想法
答案 0 :(得分:1)
您需要在Postback上重新创建动态创建的LinkButton,以便触发相关的EventHander。我强烈建议你阅读Scott Mitchell关于这个主题的classic article,而不是解释整个事情。
答案 1 :(得分:0)
您是否将表格添加到服务器控件.Controls集合中,例如
this.Controls.Add(aTable);
从您的代码示例中看起来不像,所以我希望这可能是问题
答案 2 :(得分:0)
我认为实施IPostBackEventHandler interface可能有所帮助。
在您的情况下,您可以实现接口,在RisePostBackEvent中,您可以调用事件处理程序方法。
希望这有帮助!
答案 3 :(得分:0)
查看使用服务器控件的页面(.aspx文件)。确保在初始请求和回发请求上将控件添加到页面的控制树中。所有事件都在回发请求上处理,如果在回发期间不存在生成事件的控件,则事件处理程序将永远不会触发。