Расширение GridView с помощью кнопок по умолчанию и панели обновления - PullRequest
1 голос
/ 05 августа 2011

Я пытаюсь расширить элемент управления ASP GridView, добавив несколько кнопок над ним. Например, «Вставить / Удалить / Распечатать» и т. Д. Я должен расширить элемент управления GridView, поскольку он используется во многих местах проекта. Кнопки и элемент управления должны быть обернуты в панель обновления, чтобы можно было выполнить частичное обновление. Я пытаюсь сделать что-то вроде этого:

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, страница еще не создана.

Пожалуйста, дайте мне несколько советов.

1 Ответ

0 голосов
/ 05 августа 2011

В этой ситуации, вероятно, я бы собрал свой собственный серверный элемент управления, который наследуется от GridView.

Вот ссылка на статью MSDN, с которой следует начать: Пошаговое руководство. Разработка и использованиеПользовательский элемент управления веб-сервера

РЕДАКТИРОВАТЬ:

Поскольку вы уже создаете пользовательский элемент управления сервером;Я думаю, что это может быть вашей проблемой: Page.Form.Controls.Add(up)

Попробуйте использовать просто Controls.Add(up).Похоже, что вы пытаетесь сделать, это добавить панель обновления на саму страницу;когда вам действительно нужно добавить его в коллекцию элементов управления вашего расширенного GridView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...