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

>
其实这么做的好处在于DataGrid能够方便的进行分页,这个排列次序接近于DataList的RepeatDirection="Vertical"效果
今天再来对上次的程序进行一下修改,实现RepeatDirection="Horizontal"的效果,同时启用DataGrid的分页。
这样可以弥补DataList不能自动分页的不足,但是效率上来说其实是很差的。





这里的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 {
DataColumn dc=new DataColumn(dt.Columns[iColumnID].ColumnName+i,dt.Columns[iColumnID].DataType);
newdt.Columns.Add(dc);
}
for(int i=0;i {
DataRow dr=newdt.NewRow();
for(int j=0;j {
if((j+i*iSize) }
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();
}

 


posted @ 2008-10-23 09:49  Landy_di  阅读(156)  评论(0编辑  收藏  举报