可能么?既然数据已经按列进行了划分,还想再重新组织,是不是对DataGrid要求太高了?感觉不应该什么想法都用他去实现.要那么复杂,不如自己写组件了.

解决方案 »

  1.   

    没可能用datagrid来实现。建议使用 StringBuilder 来构建输出表格内容。
      

  2.   

    如果DataGrid没有分页的话,那还好办。如果有分页就不好处理了。
    你可以在绑定的DataTable里面加入一个临时行,并且使这一行处于第一行,然后修改DataGrid的Header为"一年级   二年级     三年级",然后修改DataGrid的第一行为列的标题。
      

  3.   

    老兄:这个问题应该值100分,我等着收分了。
    如果是如你举的例是两行标题的话可以实现。
    你定义DataGrid有分页导航,且上下都有,然后在ItemCreate事件中改写其分页栏。也就是说,我们所要做的操作是改写上面的分页导航栏,而其真正的标题栏和下方的分页栏是不变的。
    代码如下:
      

  4.   

    要定义一个变量,用来判断是上面的分页栏还是下面的分页栏
    protected bool m_bFirstTime = true;private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    ListItemType elemType = e.Item.ItemType; 
    if (elemType == ListItemType.Pager ) 
    {
    if (m_bFirstTime) 

    // header1
    TableCell cell0 = (TableCell) e.Item.Controls[0]; 
    cell0.Controls.Clear();
    cell0.MergeStyle(DataGrid1.HeaderStyle); 
    cell0.BackColor = Color.Gainsboro; 
    cell0.ForeColor = Color.Black ; 
    cell0.ColumnSpan = 3; 
    cell0.HorizontalAlign = HorizontalAlign.Left ; 
    //string Count=ds.Tables[0].DefaultView.Count.ToString();

    cell0.Controls.Add(new LiteralControl("一年级")); 
      
    // header2
    TableCell cell1 = new TableCell();
    cell1.MergeStyle(DataGrid1.HeaderStyle); 
    cell1.BackColor = Color.Navy; 
    cell1.ForeColor = Color.Yellow; 
    cell1.ColumnSpan = 3; 
    cell1.HorizontalAlign = HorizontalAlign.Center; 
    cell1.Controls.Add(new LiteralControl("Job")); 
    e.Item.Controls.Add(cell1); 
    m_bFirstTime = false;


    else
    {
                                            m_bFirstTime = true;
                                    }
                              }
                         }
    我这是一个其有6列,主标题共两个的示例,你根据你的实际情况来更改。
      

  5.   

    呵呵,原以为这个问题很简单的。我的可用分不多了。
    谢谢sumanden(心头慌,打中张) ,给100分