我可以在GridView中合并页脚吗?

时间:2022-06-29 08:27:49

I have a GridView that is bound with a dataset. I have my footer, whichis separated by the column lines. I want to merge 2 columns; how do I do that?

我有一个与数据集绑定的GridView。我有我的页脚,它被列线分开。合并两列;我该怎么做呢?

<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 个解决方案

#1


2  

untested code

未测试的代码

1st footer template should include <%# GetTotal() %>

第一页脚模板应该包括<%# GetTotal() %>

2nd footer template should be empty

第二页的模板应该是空的

    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

#2


6  

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;

        }

    }

#3


1  

I was doing something like this - trying to have a button, in the footer span multiple cols.

我在做这样的事情——试着有一个按钮,在页脚跨多个cols。

I ran into a problem when I set columnspan via code, because a) I'm a noob, and b) it was not doing what I expected. I don't remember all the details, but there was some kind of gotcha in there - like it was adding extra columns or something.

当我通过代码设置columnspan时,我遇到了一个问题,因为a)我是noob, b)它没有做我期望的事情。我不记得所有的细节了,但是有一些问题,比如添加了额外的列之类的。

Here was my solution. Maybe some of it will be useful. I did in the prerender for the gridview (gvDocs).

这是我的解决方案。也许其中的一些会有用。我在gridview (gvDocs)的预开发中做过。

And what got it working correctly for me, was programatically removing cells of the footer as well as setting the columnspan.

它对我来说是正确的,是程序移除页脚的单元格,以及设置columnspan。

Even if the code doesn't help, maybe people will get a laugh at the encroaching forgetfulness afflicting me. It makes me laugh sometimes.

即使代码不起作用,也许人们也会嘲笑折磨我的健忘。它有时让我发笑。

   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

Fernando68 - Here it is in C#

费尔南德斯-这是在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 - Needed to use square brackets to access cell by index in the footer row

编辑-需要使用方括号在页脚行中按索引访问单元格

#1


2  

untested code

未测试的代码

1st footer template should include <%# GetTotal() %>

第一页脚模板应该包括<%# GetTotal() %>

2nd footer template should be empty

第二页的模板应该是空的

    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

#2


6  

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;

        }

    }

#3


1  

I was doing something like this - trying to have a button, in the footer span multiple cols.

我在做这样的事情——试着有一个按钮,在页脚跨多个cols。

I ran into a problem when I set columnspan via code, because a) I'm a noob, and b) it was not doing what I expected. I don't remember all the details, but there was some kind of gotcha in there - like it was adding extra columns or something.

当我通过代码设置columnspan时,我遇到了一个问题,因为a)我是noob, b)它没有做我期望的事情。我不记得所有的细节了,但是有一些问题,比如添加了额外的列之类的。

Here was my solution. Maybe some of it will be useful. I did in the prerender for the gridview (gvDocs).

这是我的解决方案。也许其中的一些会有用。我在gridview (gvDocs)的预开发中做过。

And what got it working correctly for me, was programatically removing cells of the footer as well as setting the columnspan.

它对我来说是正确的,是程序移除页脚的单元格,以及设置columnspan。

Even if the code doesn't help, maybe people will get a laugh at the encroaching forgetfulness afflicting me. It makes me laugh sometimes.

即使代码不起作用,也许人们也会嘲笑折磨我的健忘。它有时让我发笑。

   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

Fernando68 - Here it is in C#

费尔南德斯-这是在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 - Needed to use square brackets to access cell by index in the footer row

编辑-需要使用方括号在页脚行中按索引访问单元格