图片分行显示,DataTable竖表变横表的方法

代码参考过Phiree的http://www.cnblogs.com/phiree/archive/2005/11/19/280460.aspx文章,但是在套用过程用发现图片分行排列的时候Phiree的方法排列出来的图片顺序是竖排的,并是我想像中的横排,所以修改了他的记录插入方法,这样排列顺序就完全按照图片添加的顺序从左到右,从上到下排列。最后一行如果图片不够一行,则自动以最后的图片填充满一行。你也可以修改代码来显示空白图片。

well,代码如下:

        //DataTable是传入的需要转换的竖表
        
//int iColumnSize是每行需要显示的记录数目,在我的应用中的每行显示的图片数目
        
//int[] iColumnID是需要将传入的竖表中哪些列转换到新的横表中去
        private DataTable ChangeDataTable(DataTable dt,int iColumnSize,int[] iColumnID)
        
{
            DataTable newdt 
= new DataTable(); 
            
//int[] iColumnID = new int[]{0,1,2};
            
//int iColumnSize = 5;

            
int ColumnCount = iColumnID.Length;
            
int totalRows = dt.Rows.Count;
            
int itmp = totalRows % iColumnSize; //计算行数
            int iRows; 
            
if(itmp == 0)
            
{
                iRows 
= totalRows / iColumnSize;
            }

            
else
            
{
                iRows 
= totalRows / iColumnSize + 1;
            }


            
for(int i=0;i<iColumnSize;i++//列插入新表
            {  
                
for(int j=0;j<ColumnCount;j++)
                
{
                    DataColumn dc
=new DataColumn(dt.Columns[iColumnID[j]].ColumnName + i.ToString(),dt.Columns[iColumnID[j]].DataType); 
                    newdt.Columns.Add(dc); 
                }

            }


            
for(int i=0;i<iRows;i++//将行插入新表
            {  
                DataRow dr
=newdt.NewRow();
                
int m = 0;
                
for(int j=0;j<iColumnSize;j++)
                
{
                    
for(int k=0;k<ColumnCount;k++)
                    
{
                        
int n = i*iColumnSize + j;
                        
if(n<totalRows)
                        
{
                            dr[m] 
= dt.Rows[n][k];
                        }

                        
else
                        
{
                            dr[m]
=dt.Rows[totalRows-1][k];
                        }

                        m
++;
                    }

                }

                newdt.Rows.Add(dr);
            }
posted @ 2006-08-23 11:12  KenBlove  阅读(1008)  评论(0编辑  收藏  举报