代码参考过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); }转载于:https://www.cnblogs.com/KenBlove/articles/484100.html
相关资源:T392551790.zip datatable 横表转竖表 横表转纵表 通用的代码