上一次说了怎么利用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;
}
{
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();
}
{
// 在此处放置用户代码以初始化页面
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();
}
{
this.datagrid1.currentpageindex=e.newpageindex;
setbind();
}