Перезаписать вывод заголовка элемента управления ASP.NET gridview - PullRequest
2 голосов
/ 03 июня 2009

Есть ли эффективный способ перезаписать вывод HTML верхнего и нижнего колонтитула элемента управления ASP.NET GridView?

Я хотел бы реализовать методологию, которая похожа на тег HeaderTemplate в ASP.NET Repeater или не требует включения динамического построения вывода HTML в коде страницы. Если эти два типа параметров доступны для элемента управления ASP.NET GridView.

Ответы [ 4 ]

1 голос
/ 15 января 2010

В Gridview вы можете использовать событие RowCreated, чтобы полностью «уничтожить» и воссоздать верхний и / или нижний колонтитулы. Во время этого события проверьте:

if (e.Row.RowType = DataControlRowType.Header)
{
     // At this point you have access to e.Row.Cells
     // You can now empty the collection and recreate it.
     // If you create a singular cell in the collection
     // you can then make its ColumnSpan reach across
     // the length of the entire table. Then inside this 
     // cell you can add any set of controls you want.
     // I've used this method to combine column headers
     // and add specialty controls that simply wouldn't
     // working using the HeaderTemplate
}

Поскольку это делается в RowCreated, во время RowDataBound у вас будет доступ к этим элементам управления, а затем вы сможете манипулировать ими по своему усмотрению на основе данных. Это удобно для выполнения сложных вычислений в нижнем колонтитуле, настройки изображений в верхнем колонтитуле на основе сортировки и т. Д.

0 голосов
/ 15 января 2010

Чтобы изменить проверку по ячейкам в RowCreated, есть способ сделать это, например. если вы хотите добавить раскрывающийся список в столбец, чтобы можно было выполнить фильтрацию.

if (e.Row.RowType = DataControlRowType.Header)
{
    e.Row.Cells[0].Controls.Clear();

    var ddlFilter = new DropDownList();
    //add options etc

    e.Row.Cells[0].Controls.Add(ddlFilter);
}

Если бы вы собирались преобразовать в одну ячейку и добавить новые элементы управления, тогда я просто установил бы ShowHeader=false и поместил бы мою разметку / элементы управления выше вида сетки

0 голосов
/ 22 июля 2009

Вы также можете наследовать управление и переопределить функцию рендеринга. Я должен был сделать это, чтобы исправить недостаток переключателя ASP.NET. Основная идея здесь, вы можете изменить ее для своих нужд:

http://www.codeproject.com/KB/webforms/How_group_RButtons.aspx

0 голосов
/ 03 июня 2009

Возможно, вы захотите рассмотреть вопрос об использовании ASP.Net Control Adapter . Я использовал их для самых простых вещей, но так же, как Скотт Гатри примечания:

Адаптер управления позволяет подключить к любому серверу ASP.NET и переопределить, изменить и / или настроить рендеринг выходной логики этого управление.

Toolkit также содержит несколько готовых адаптеров, которые вы можете использовать для примера, включая GridView. Опять же, я не уверен на 100%, что вы сможете делать именно то, что вы хотите, но это стоит проверить наверняка. Если не что иное, как положить еще один трюк ASP.Net под свой пояс.

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