需求是这样的:
    我的gridview是接收前一页的参数来动态显示的,也就是说gridview的列是不确定的。我想在gridview中建个footer行,不管我的gridview是多少列,footer行只显示为一列(即合并footer列),并在footer行中对gridview求总计(即gridview总的行数)。
如何实现呢?
PS:我是用C#语言进行程序编写的。

解决方案 »

  1.   

    你后台写个方法a把总计算出来!在前台丢个空间 在绑定控件的Text“<%=  a(Eval("字段")) %>”至于参数就看你需要什么就传什么了哦
      

  2.   


    这个方法就行
    footer里其实是和普通字段一样的
    那么你就可以用“求和”算出有多少条
      

  3.   

    GridView编辑之后其实就是一个table.所以GridView和table一样可以跨行,也可以跨列.RowSpan和ColumnSpan.在后台可以控制.So easy
      

  4.   

    protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Footer )
            {
                e.Row.Cells[0].Text = "合计:";
    e.Row.Cells[4].ColumnSpan=4;
    //把其他列隐藏就行了!
            }
    }
      

  5.   

    这方面可行,如果你是绑定数据集合计,可以从数据集里面sum
    如果是当前页总计,只有绑定数据后再循环gridview获取数据再相加,或者sum数据集的top多少。
      

  6.   

    不怎么用gridview,不够灵活,,用reperter写一个改改一个,,多爽啊,,够灵活,,随心所欲
      

  7.   

    摘自GRIDVIEW72变private double sum = 0;//取指定列的数据和,你要根据具体情况对待可能你要处理的是int
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
            if (e.Row.RowIndex >= 0)
            {
                sum += Convert.ToDouble(e.Row.Cells[6].Text);
            }
            else if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[5].Text = "总薪水为:";
                e.Row.Cells[6].Text = sum.ToString();
                e.Row.Cells[3].Text = "平均薪水为:";
                e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();
                
            }
        }
      

  8.   

    合并footer有点困难,但做到楼主的效果还是可以的!!
    把你的总计放到最后一列!!
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                TableCellCollection cells = e.Row.Cells;
                for (int i = 0; i < cells.Count; i++)
                    cells[i].CssClass = "你的css";//消除边框,设置背景色            cells[cells.Count-1].Text="总计:"+你的变量
                cells[cells.Count - 1].Wrap = false;
            }
        }
      

  9.   

    其實你们的答案应该LZ知道的。他可能是要把最下面的所有FOOTER 合并为一ROW(行),然后在最右边显示他要的结果。如果用E。ROW。CELLS[第几列)。TEXT 这个并没有合并。我觉得LZ可能是想这样的
      

  10.   


    谢谢你,我根据你的代码稍微修改了一下,得到了我想要的总计,但还是没有进行合并footer。望指教。谢谢!
    我的修改如下:
    if (e.Row.RowType == DataControlRowType.Footer)
            {
                TableCellCollection cells = e.Row.Cells;
                for (int i = 0; i < cells.Count; i++)
                cells[cells.Count - 1].Text = "总计:"+this.GridView1.Rows.Count+"条";
                cells[cells.Count - 1].Wrap = false;
            } 
      

  11.   

     if (e.Row.RowType == DataControlRowType.Footer)
            {
                TableCell cell = new TableCell();
                cell.ColumnSpan = e.Row.Cells.Count;
                cell.Text = "总计:条数";(这里可以随便写,相当于已将单元格合并了)
                cell.HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells.Clear();
                e.Row.Cells.Add(cell);
            }