C# 使用默认按钮和更新面板扩展GridView

C# 使用默认按钮和更新面板扩展GridView,c#,asp.net,ajax,gridview,datagrid,C#,Asp.net,Ajax,Gridview,Datagrid,我试图通过在ASP GridView控件上方添加一些按钮来扩展它。例如插入/删除/打印等。我必须扩展GridView控件,因为它在项目中的许多地方都使用。按钮和控件必须包装在UpdatePanel中,以便可以进行部分更新。我正在尝试这样做: UpdatePanel up = new UpdatePanel(); ImageButton newButton = new ImageButton(); newButton.ImageUrl = "../Images/new.gif"; up.Con

我试图通过在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,我会得到以下结果:

在数据绑定、初始化、加载、预渲染或卸载阶段,无法修改控件集合

此错误发生在第二次添加时

若我把它放在CreateChildControls中,那个么页面还并没有创建


请给我一些提示。

在这种情况下,我可能会构建自己的自定义服务器控件,该控件继承自GridView

这里有一个指向MSDN文章的链接,您可以从中开始:

编辑:

因为您已经在创建自定义服务器控件;我想这可能是你的问题所在:Page.Form.Controls.Addup


尝试使用simply Controls.Addup。看起来您正在尝试的是将更新面板添加到页面本身;当你真的应该将它添加到扩展GridView的控件集合时

你能用RenderContents方法的内容更新你的帖子吗?Jim B:我没有想到使用RenderContents方法,这让我产生了这样的想法:ImageButton newButton=newImageButton。。。newButton.RenderControlwriter;base.RenderContentswriter;}我只需要弄清楚如何从那里调用一个方法。