Могу ли я объединить нижний колонтитул в GridView? - PullRequest
4 голосов
/ 30 апреля 2009

У меня есть GridView, который связан с набором данных. У меня есть нижний колонтитул, который отделен от строк столбца. Я хочу объединить 2 столбца; как мне это сделать?

<asp:TemplateField HeaderText="Name" SortExpression="Name">
<ItemTemplate>
...  
</ItemTemplate>
<FooterTemplate >                    
Grand Total:
</div>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age" SortExpression="Age">
<ItemTemplate>
...  
</ItemTemplate>
<FooterTemplate >                    
<%# GetTotal() %> 
</div>
</FooterTemplate>
</asp:TemplateField>

Ответы [ 3 ]

6 голосов
/ 02 декабря 2014
protected void GridView1_OnRowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.Footer)
        {
           e.Row.Cells.RemoveAt(1);
           e.Row.Cells[0].ColumnSpan = 2;

        }

    }
2 голосов
/ 30 апреля 2009

непроверенный код

Шаблон первого нижнего колонтитула должен содержать <% # GetTotal ()%>

Шаблон второго нижнего колонтитула должен быть пустым

    Protected Sub Page_SaveStateComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SaveStateComplete
        Dim DG As GridView = GridView1
            Dim Tbl As Table = DG.Controls(0)
            Dim tr As GridViewRow
            Dim i As Integer
            Dim j As Integer

tr = Tbl.Rows(Tbl.Rows.Count - 1) 'this line assume last row is footer row

                    tr.Cells(0).ColumnSpan = 2 'if you have 3 columns then colspan = 3 instead

                    For j = 1 To 1 'if you have 3 columns then j = 1 To 2 instead
                        tr.Cells(j).Visible = False
                    Next

    End Sub
1 голос
/ 05 мая 2009

Я делал что-то вроде этого - пытался получить кнопку, расположенную в нижнем колонтитуле с несколькими столбцами.

Я столкнулся с проблемой, когда установил значение columnpan с помощью кода, потому что a) я нуб, и b) он не делал то, что ожидал. Я не помню всех деталей, но там была какая-то хитрость - например, добавление дополнительных столбцов или что-то в этом роде.

Вот мое решение. Может быть, некоторые из них будут полезны. Я сделал в prerender для gridview (gvDocs).

И что у меня получилось правильно, так это программное удаление ячеек нижнего колонтитула, а также настройка диапазона столбцов.

Даже если код не поможет, возможно, люди будут смеяться над нападающей забывчивостью, сокрушающей меня. Иногда это заставляет меня смеяться.

   Protected Sub gvDocs_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvDocs.PreRender

        If gvDocs.Rows.Count > 0 Then


            Dim m As Integer = gvDocs.FooterRow.Cells.Count
            For i As Integer = m - 1 To 1 Step -1
                If i <> 8 Then '7 is the number of the column with the applychanges button in it.
                    gvDocs.FooterRow.Cells.RemoveAt(i)
                End If
            Next i
            gvDocs.FooterRow.Cells(1).ColumnSpan = 6 '6 is the number of visible columns to span.
        End If
    End Sub

Фернандо68 - Вот он в C #

protected void gvDocs_PreRender(object sender, System.EventArgs e)
{

    if (gvDocs.Rows.Count > 0) {

        int m = gvDocs.FooterRow.Cells.Count;
        for (int i = m - 1; i >= 1; i += -1) {
            //7 is the number of the column with the applychanges button in it.
            if (i != 8) {
                gvDocs.FooterRow.Cells.RemoveAt(i);
            }
        }
        gvDocs.FooterRow.Cells[1].ColumnSpan = 6;
        //6 is the number of visible columns to span.
    }
}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================

EDITED - необходимо использовать квадратные скобки для доступа к ячейке по индексу в строке нижнего колонтитула

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