public static int _pageSize=15;  public static string _header;
/// <summary>
/// 传入DataGrid的引用和每页记录数,让DataGrid在打印时分页显示
/// </summary>
/// <param name=“grid”>要打印的DataGrid</param>
/// <param name="pageSize">每页显示记录条数</param>
在表格的ItemDataBound事件(在项创建时激发)和ItemCreated事件(在项被数据绑定后激发)中添加如下代码
private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
   if (e.Item.ItemIndex > 0 && e.Item.ItemIndex % _pageSize == 0)  {
     LiteralControl  l = new LiteralControl();
    string header =  _header.Remove(_header.Length - 12, 12); //把表头代码结尾的</td>\r\n</tr>截去
   //加上处理过的表头
   l.Text = "</td></tr><tr><td bordercolor=white cellpadding=0 style=\"page-break-after:always\" colspan=\"" + e.Item.Cells.Count + "\"></td></tr>
     <td colspan=" + + e.Item.Cells.Count + "\"></td>" +  header;
     //如果最后一列是template column得用这句加,注释下面的.原因不明... 
     //e.Item.Cells[e.Item.Cells.Count-1].Controls.Add(l);
     e.Item.Cells[e.Item.Cells.Count-1].Text += l.Text ;
     }
}
private void DataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){
   //拿到表头的html代码
   if (e.Item.ItemIndex == -1)  {
      System.IO.StringWriter tw = new System.IO.StringWriter();
     HtmlTextWriter htw = new HtmlTextWriter(tw);
     e.Item.RenderControl(htw); 
    _header = tw.ToString();
   }
}