上一次说了怎么利用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> 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(); }