Перезаписать вывод заголовка элемента управления ASP.NET gridview

2

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

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

Теги:
header
gridview

4 ответа

1

В 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

Чтобы изменить проверку ячейки за ячейкой в ​​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 и поместил свою разметку/элементы управления над gridview

0

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

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

0

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

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

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

  • 0
    Спасибо за информацию. Я буду искать для моего следующего проекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню