phiree

博客园 首页 联系 订阅 管理
在LoveCherry的blog中(http://www.cnblogs.com/lovecherry/archive/2005/04/28/146749.html)有一个竖表转横表的方法,但是只能支持只有一列的DataTable, 我改进了一下 可以支持多列.
public DataTable MakeData(DataTable dt,int iSize,int[] iColumnID) //isize:每列行数 iColumnID 需要横向排列的列的序号数组
        {   
            
int ColumnCount=iColumnID.Length;
            
int itmp=dt.Rows.Count%iSize; 
            
int iColumn; //列数
            if(itmp==0
                iColumn
=dt.Rows.Count/iSize; 
            
else 
                iColumn
=dt.Rows.Count/iSize+1
            DataTable newdt
=new DataTable(); 
            
for(int i=0;i<iColumn;i++
            
{  
                
for(int j=0;j<ColumnCount;j++)
                
{  string aa=dt.Columns[iColumnID[j]].ColumnName+i;
                    DataColumn dc
=new DataColumn(dt.Columns[iColumnID[j]].ColumnName+i,dt.Columns[iColumnID[j]].DataType); 
                
                    newdt.Columns.Add(dc); 
                }

            }
 
            
for(int i=0;i<iSize;i++
            
{         
                DataRow dr
=newdt.NewRow(); 
                
for(int j=0;j<iColumn;j++
                

                    
for(int k=0;k<ColumnCount;k++)
                    
{
                        
if((i+j*iSize)<dt.Rows.Count) 
                        
{  string aa=dt.Columns[iColumnID[k]].ColumnName+j;
                            dr[dt.Columns[iColumnID[k]].ColumnName
+j]=dt.Rows[i+j*iSize][iColumnID[k]]; 
                        }

                    }

                }
 
                newdt.Rows.Add(dr);                 
            }
 
            
return newdt; 
        }
 
posted on 2005-11-19 22:44  phiree  阅读(2642)  评论(1编辑  收藏  举报