我试图通过在其上面添加一些按钮来扩展ASP GridView控件。如插入/删除/打印等我必须扩展GridView控件,因为它在项目的很多地方使用。按钮和控件必须包装在UpdatePanel中,以便它可以进行部分更新。我想做这样的事情:
UpdatePanel up = new UpdatePanel();
ImageButton newButton = new ImageButton();
newButton.ImageUrl = "../Images/new.gif";
up.ContentTemplateContainer.Controls.Add(newButton);
up.ContentTemplateContainer.Controls.Add(this);
Page.Form.Controls.Add(up);
问题是我不知道放在哪里,我甚至都不知道这是否有效。如果我把它放在OnLoad / OnPreRender上,我就明白了:
“在DataBind,Init,Load,PreRender或Unload阶段无法修改控件集合。”
第二次添加时会出现此错误。
如果我把它放在CreateChildControls中,页面尚未创建。
请给我一些指示。
答案 0 :(得分:0)
在这种情况下,我可能会构建自己的继承自GridView的自定义服务器控件。
以下是可以帮助您入门的MSDN文章的链接:Walkthrough: Developing and Using a Custom Web Server Control
修改强>
因为您已经在创建自定义服务器控件;我认为这可能是您的问题:Page.Form.Controls.Add(up)
尝试使用Controls.Add(up)
。您尝试做的是将更新面板添加到Page本身;什么时候应该将它添加到扩展GridView的控件集合