DataGrid的ItemDataBound事件。
//使用colspan和rowspan控制所占列和行的数量
if(e.Item.ItemType == ListItemType.Header)
{
   string str = "<td colspan='1' rowspan='3'>日期</td> <td>colspan='1' rowspan='3'>名称</td> <td colspan='8'>种类</td> <td colspan='2'>合计</td></tr>";
   str += "<tr><td> </td> <td colspan='2'>A</td> <td colspan='2'>B</td><td colspan='2'>C</td><td></td><td></td></tr>";
  str += "<tr><td></td> <td>数量</td> <td>金额</td> <td>数量</td> <td>金额</td> <td>数量</td> <td>金额</td> <td>数量</td> <td>金额</td> <td>数量</td> <td>金额</td></tr>";e.Item.Cells[0].Text = str;
}这个是一个三行多列的表头!代码我没试过。反正应该差不多,一个简单的方法,可以用DreamWeaver或Frontpage把该表头做成Table,用那些工具很容易完成,然后切换到Html里,将Html代码粘到ItemDataBound事件中来,很方便了,我就这么做的。