我只想说,你前面发 的一个帖子白发了,,说了那么多你还不明白,        //获取打印数据的具体行数   
        this.rows = dataview.RowCount;
你的DataGridView分页了,这里获取的始终是第一页的rowCount所以打的始终是第一页的,你自己调试下就知道了,
你那打印写的太复杂了,直接用水晶报表很方便