2016-02-15 5 views
1

Я модернизирую пользовательский интерфейс старого приложения ASP.Net WebForms. Я использую Bootstrap 3 для этого. Большинство элементов управления легко восстанавливаются, но элемент управления GridView создает определенные проблемы. Bootstrap нуждается в заголовке таблицы, который находится в разделе thead, но элемент управления GridView отображает заголовок внутри секции тела таблицы. я был в состоянии заставить GridView, чтобы сделать заголовок внутри THEAD элемента, используя этот код:ASP.Net WebForms Таблица заголовков таблицы GridView в thead - при сортировке

public class AdvancedGridView : GridView 
{ 
    #region Overrides of GridView 

    protected override void OnPreRender(EventArgs e) 
    { 
     if ((ShowHeader && Rows.Count > 0) || ShowHeaderWhenEmpty) 
      HeaderRow.TableSection = TableRowSection.TableHeader; 
     if (ShowFooter && Rows.Count > 0) 
      FooterRow.TableSection = TableRowSection.TableFooter; 

     base.OnPreRender(e); 
    } 

    #endregion 
} 

Но я все еще есть проблемы. Как только пользователь сортирует таблицу по любому столбцу, элемент управления GridView снова отобразит и переместит заголовок внутри элемента body таблицы.

Как сделать GridView рендерингом своего заголовка внутри элемента thead при его сортировке пользователем?

+1

Я не знаю, как вы делаете свой сорт, и я никогда не использовал PreRender, но я всегда добивался успеха в этом событии RowDataBound: 'if (e.Row.RowType == DataControlRowType.Header) e.Row.TableSection = TableRowSection.TableHeader; ' –

+0

Большое спасибо! Это решение отлично работает для меня. Если вы добавите его в качестве ответа, я приму его как правильное решение. – musium

ответ

1

Хотелось бы знать, почему, но, видимо, событие OnPreRender не всегда срабатывает.

Я нашел следующее, чтобы всегда работать в рамках события RowDataBound вашего gridview.

if (e.Row.RowType == DataControlRowType.Header) 
    e.Row.TableSection = TableRowSection.TableHeader; 

Это также имеет дополнительное преимущество, не имея проверить в своем коде, чтобы увидеть, если есть строки, как событие будет стрелять только если есть.

Смежные вопросы