如何用DataGrid实现类似DataList多列的效果

 

上一次说了怎么利用DataGrid纵向显示
http://www.cnblogs.com/lovecherry/archive/2005/04/23/143819.html
其实这么做的好处在于DataGrid能够方便的进行分页,这个排列次序接近于DataList的RepeatDirection="Vertical"效果
今天再来对上次的程序进行一下修改,实现RepeatDirection="Horizontal"的效果,同时启用DataGrid的分页。
这样可以弥补DataList不能自动分页的不足,但是效率上来说其实是很差的。


< asp:DataGrid  id ="DataGrid1"  runat ="server"  AllowPaging ="True"  PageSize ="4" ></ asp:DataGrid >

这里的Pagesize是代表行数,下面那个方法的iSize参数代表列数

private  DataTable MakeData(DataTable dt, int  iSize, int  iColumnID) 
        

            
int itmp=dt.Rows.Count%iSize; 
            
int iRow; 
            
if(itmp==0
                iRow
=dt.Rows.Count/iSize; 
            
else 
                iRow
=dt.Rows.Count/iSize+1
            DataTable newdt
=new DataTable(); 
            
for(int i=0;i<iSize;i++
            

                DataColumn dc
=new DataColumn(dt.Columns[iColumnID].ColumnName+i,dt.Columns[iColumnID].DataType); 
                newdt.Columns.Add(dc); 
            }
 
            
for(int i=0;i<iRow;i++
            
{         
                DataRow dr
=newdt.NewRow(); 
                
for(int j=0;j<iSize;j++
                

                    
if((j+i*iSize)<dt.Rows.Count)dr[dt.Columns[iColumnID].ColumnName+j]=dt.Rows[j+i*iSize][iColumnID]; 
                }
 
                newdt.Rows.Add(dr);                 
            }
 
            
return newdt; 
        }
 

private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(!IsPostBack)
            
{
                SetBind();
            }

        }


        
private   void  SetBind()
        
{
            DataTable dt
=new DataTable(); 
            DataColumn dc
=new DataColumn("test",Type.GetType("System.String")); 
            dt.Columns.Add(dc); 
            
for(int i=1;i<=54;i++
            

                DataRow dr
=dt.NewRow(); 
                dr[
"test"]="测试"+i; 
                dt.Rows.Add(dr); 
            }
 
            
this.DataGrid1.DataSource=MakeData(dt,4,0); 
            
this.DataGrid1.DataBind();
        }

 

     private   void  DataGrid1_PageIndexChanged( object  source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        
{
            
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
            SetBind();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值