在GridView页脚加入统计自定统计信息

完成后的效果图
priny.jpg
很早之前就做过了,但是忘记了。
网上的那个在我实际开发中用处不大,但是也可以借鉴。
http://www.cnblogs.com/Reeezak/archive/2006/07/09/446444.aspx

我自己的,在生成Excel尾部加入统计信息:

None.gif          protected   void  myGridView_RowDataBound( object  sender, GridViewRowEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if (e.Row.RowType == DataControlRowType.Footer)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                e.Row.Cells[
0].Text = "统计:";
InBlock.gif                e.Row.Cells[
0].HorizontalAlign = HorizontalAlign.Center;
InBlock.gif
InBlock.gif                e.Row.Cells[
1].Text = "Avg:";//获取统计信息
InBlock.gif

InBlock.gif                e.Row.Cells[
1].ColumnSpan = 10;
InBlock.gif                
for (int i = 2; i <= 10; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    e.Row.Cells[i].Visible 
= false;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }

如果在页面显示,加入分页,想在页尾显示,只需要在分页时加入最后页显示就可以了。
eg:myGridView.ShowFooter=(pds.IsLastPage ? false : true);

实际操作中就出现了问题,我用以下方法获取统计信息:
None.gif ArrayList list  =   new  ArrayList();
None.gif
for  ( int  i  =   0 ; i  <  dt.Rows.Count; i ++ )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
if (!list.Contains(dt.Rows[i][columnname]))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        list.Add(dt.Rows[i][columnname]);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
return  list.Count;

我在Page_Load里执行此操作,可统计信息放在页尾RowDataBound里面,我定义了全局变量,可是无法得到数据.
研究发现,得不到数据很正常.后来这样做,如下:
ContractedBlock.gif ExpandedBlockStart.gif
None.gifprivate int TotalRowCount = 15;//设置每页显示的行数  
None.gif
        private int numCount = 0;//自动填充的行数
None.gif
        private int hours1;//一般件
None.gif
        private int hours2;//急速件
None.gif
        private int hours3;//最速件
None.gif
        private int state1;//处理中
None.gif
        private int state2;//已结案
None.gif
        private int state3;//已退件
None.gif
        protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
//if (e.Row.RowType == DataControlRowType.Header)
InBlock.gif            
//{
InBlock.gif            
//    e.Row.Attributes.Add("style", "background-image:url('./HeadImages/headeImage.jpg')");
InBlock.gif            
//}
InBlock.gif
            int strid = e.Row.RowIndex;
InBlock.gif            
//if (strid != -1)
InBlock.gif            
//{
InBlock.gif            
//    e.Row.Cells[0].Text = (this.myGridView.PageIndex * this.myGridView.PageSize + strid + 1).ToString();
InBlock.gif            
//}
InBlock.gif
            HyperLink strHLPrint = (HyperLink)e.Row.FindControl("myHLPrints");
InBlock.gif            
if (strHLPrint != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if (((HiddenField)e.Row.FindControl("hdend_mk")).Value != "1")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    strHLPrint.Enabled 
= false;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
if (e.Row.RowType == DataControlRowType.DataRow)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
// 计算自动填充的行数
InBlock.gif
                numCount++;
InBlock.gif                
switch (DataBinder.Eval(e.Row.DataItem, "hours").ToString())
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
case "1":
InBlock.gif                        hours1
++;
InBlock.gif                        
break;
InBlock.gif                    
case "2":
InBlock.gif                        hours2
++;
InBlock.gif                        
break;
InBlock.gif                    
case "3":
InBlock.gif                        hours3
++;
InBlock.gif                        
break;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
string strtype = DataBinder.Eval(e.Row.DataItem, "end_mk").ToString();
InBlock.gif                
if (strtype == "0")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    state1
++;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if (strtype == "1")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    state2
++;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if (strtype == "2" || strtype == "3" || strtype == "4" || strtype == "5")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    state3
++;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
if (e.Row.RowType == DataControlRowType.Footer)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
// 计算完毕,在此添加缺少的行
InBlock.gif
                int toLeft = TotalRowCount - numCount;
InBlock.gif                
int numCols = myGridView.Rows[0].Cells.Count;
InBlock.gif                
for (int i = 0; i < toLeft; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    GridViewRow row 
= new GridViewRow(-1-1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
InBlock.gif                    
for (int j = 0; j < numCols; j++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        TableCell cell 
= new TableCell();
InBlock.gif                        cell.Text 
= "&nbsp;";
InBlock.gif                        row.Cells.Add(cell);
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    myGridView.Controls[
0].Controls.AddAt(numCount + 1 + i, row);
ExpandedSubBlockEnd.gif                }

InBlock.gif                e.Row.Cells[
0].Text = "小计:";
InBlock.gif                e.Row.Cells[
0].HorizontalAlign = HorizontalAlign.Center;
InBlock.gif                e.Row.Cells[
1].Text = "一般件:<font color='red'>" + hours1 + "</font>;&nbsp;急速件:<font color='red'>" + hours2 + "</font>;&nbsp;最速件:<font color='red'>" + hours3 + "</font>;&nbsp;&nbsp;&nbsp;&nbsp;处理中:<font color='red'>" + state1 + "</font>;&nbsp;已结案:<font color='red'>" + state2 + "</font>;&nbsp;已退件:<font color='red'>" + state3 + "</font>";//获取统计信息
InBlock.gif
                e.Row.Cells[1].ColumnSpan = 11;
InBlock.gif                
for (int i = 2; i <= 11; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    e.Row.Cells[i].Visible 
= false;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedBlockEnd.gif        }

转载于:https://www.cnblogs.com/cnaspnet/archive/2007/04/25/726935.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值