ASP.NET GridView | Как создать нижний колонтитул, как точную копию заголовка? (Визуальные и Методы) - PullRequest
2 голосов
/ 05 января 2011

Я расширяю Gridview. Прямо сейчас у меня есть это: alt text

Моя цель - изменить его, пока я не получу это (Paint): alt text

Я думаю, что это можно сделать через "OnRowCreated". Но понятия не имею, как это сделать.

    protected override void OnRowCreated(GridViewRowEventArgs e)
    {
        base.OnRowCreated(e);

        if (e.Row.RowType == DataControlRowType.Footer)
        {


        }
    }

Может ли кто-нибудь помочь мне в этом?

Привет

Ответы [ 3 ]

1 голос
/ 05 января 2011

В соответствии с вашим вопросом в комментариях JonH, если есть более простой способ поместить текст верхнего колонтитула в нижний колонтитул, задайте текст ячейки каждого нижнего колонтитула так же, как и заголовок (Vb.Net):

   Private Sub MyGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.Footer Then
            Dim header As GridViewRow = DirectCast(sender, GridView).HeaderRow
            For i As Int32 = 0 To header.Cells.Count - 1
                Dim headerCell As TableCell = header.Cells(i)
                Dim footerCell As TableCell = e.Row.Cells(i)
                footerCell.Text = headerCell.Text
            Next
        End If
    End Sub

Вы должны использовать один и тот же CssClass для HeaderStyle и FooterStyle, чтобы применить тот же стиль.

Если вы хотите добавить элементы управления динамически (например, флажок в вашем изображении), вы должны использовать вместо этого RowCreated-Event (как предложил Томас Ворачек), потому что элементы управления должны генерироваться заново при каждой обратной передаче, а RowDataBound вызывается только тогда, когда вы связываете источник данных в сетку.

1 голос
/ 05 января 2011

Просто измените его на

if (e.Row.RowType == DataControlRowType.Header ||  e.Row.RowType == DataControlRowType.Footer)
{
  // add cells to row
}
0 голосов
/ 05 января 2011

Установите свойство ShowFooter для gridview в значение true.Тогда у вас есть правильная идея, вам нужно сначала придать некоторый стиль нижнему колонтитулу, поскольку он будет отображаться белым цветом только тогда, когда вы установите ShowFooter = True.

Как только вы примените немного CSS к настройкам свойства нижнего колонтитула, выувидим какой-то цвет.В событии RowCreatedEvent выполните проверку:

if (e.Row.RowType == DataControlRowType.DataRow)
    {
      //dont do anything
    }
    else if (e.Row.RowType == DataControlRowType.Footer)
    {
      e.Row.Cells[1].Text = "MyCol1";
      e.Row.Cells[2].Text = "MyCol2";
      e.Row.Cells[3].Text = "MyCol3";
    }

Вот статья на случай, если вам понадобится дополнительная помощь

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