【问题标题】:Extending GridView with default buttons and update panel使用默认按钮和更新面板扩展 GridView
【发布时间】:2011-08-05 14:03:10
【问题描述】:

我正在尝试通过在其上方添加一些按钮来扩展 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 页面还没有创建。

请指点一下。

【问题讨论】:

    标签: c# asp.net ajax gridview datagrid


    【解决方案1】:

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

    这是 MSDN 文章的链接,可以帮助您入门:Walkthrough: Developing and Using a Custom Web Server Control

    编辑:

    由于您已经在创建自定义服务器控件;我认为这可能是您的问题:Page.Form.Controls.Add(up)

    尝试简单地使用Controls.Add(up)。您正在尝试做的是将更新面板添加到页面本身;当你真的应该将它添加到扩展 GridView 的控件集合中时

    【讨论】:

    • 你能用你的 RenderContents() 方法的内容更新你的帖子吗?
    • Jim B:我没有想过使用 RenderContents() 方法,这让我想到了在其中放置这样的东西:ImageButton newButton = new ImageButton(); ... newButton.RenderControl(writer); base.RenderContents(writer); } 我只需要弄清楚如何调用方法从那里开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多