最近有朋友和我要用table自己写过了个类似DATALIST的水平重复显示的东东,就写了个。不过时间参促也没重构,有兴趣的朋友可以来看看.欢迎有兴趣的朋友再重构。记得发我哦!
先定义基类:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;


/**//// <summary>
/// 小象的博客,wzjingwei.cnblogs.com
/// </summary>
namespace wzjingwei.cnblogs.com


{
public abstract class HorizontalRepeatBase:System .Web .UI .Page

{
protected ArrayList TCellCollection = new ArrayList();
protected ArrayList TRowCollection = new ArrayList();

public HorizontalRepeatBase()

{
//
// TODO: 在此处添加构造函数逻辑
//
}

protected void ProduceHorizontalRepeatTable(int HorizontalRepeatCounts)

{
int nCells = TCellCollection.Count;//td数目


int nRows = 0;
if (Math.IEEERemainder((double)nCells, (double)HorizontalRepeatCounts) == 0)//判断是否整除

{
nRows = nCells / HorizontalRepeatCounts;
}
else

{
nRows = nCells / HorizontalRepeatCounts + 1;
}

// nRows = nCells / HorizontalRepeatCounts;//最后生成的行数
bool breakFlag = false;
for (int i = 0; i < nRows; i++)

{
TableRow Row = new TableRow();

for (int j = 0; j < HorizontalRepeatCounts; j++)

{

Row.Cells.Add((TableCell)TCellCollection[i * HorizontalRepeatCounts + j]);
if (i * HorizontalRepeatCounts + j == nCells - 1)

{
breakFlag = true;
break;
}
}

TRowCollection.Add(Row);

if (breakFlag)

{ break; }
}


}

abstract protected void ProduceTD();



}


}
实现类:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace wzjingwei.cnblogs.com


{

/**//// <summary>
/// 小象的博客,wzjingwei.cnblogs.com
/// </summary>
public class HorizontalRepeat : HorizontalRepeatBase

{
IDataReader dr;
int HorizontalRepeatCounts;
Table MyTable;
string Category;


public HorizontalRepeat(IDataReader dr1, int HorizontalRepeatCounts1, ref Table table,string CategoryPara)

{
dr = dr1;
HorizontalRepeatCounts = HorizontalRepeatCounts1;
MyTable = table;
Category = CategoryPara;
}

override protected void ProduceTD()

{
while (dr.Read())

{
TableCell Cell = new TableCell();
double width = 1 / (double)HorizontalRepeatCounts * 100;
Cell.Width = Unit.Percentage(width);
switch (Category)

{
case "GetView":
GetViewMost(ref Cell);
break;
default:

break;
}
TCellCollection.Add(Cell);
}
}

public void Do()

{
ProduceTD();

base.ProduceHorizontalRepeatTable(HorizontalRepeatCounts);

for (int i = 0; i < TRowCollection.Count; i++)

{
MyTable.Rows.Add((TableRow)TRowCollection[i]);
}
}



private void GetView(ref TableCell Cell)

{
Cell.Text = "<div align='center'><a href=UserList.aspx?ProvinceType=All&Province=" +Server.UrlEncode ( dr["BaseInfoProvince"].ToString()) + ">" + dr["BaseInfoProvince"].ToString() + "(" + dr["ProvinceUserNum"].ToString() + ")</a> </div>";
Cell.BorderWidth = Unit.Pixel(1);
}

}
}
//调用方法
IDataReader dr = null;
//被关注最多的6个
DataAccessLayer.MainDataAccess MDA = new DataAccessLayer.MainDataAccess();
//获得数据
dr=MDA.GetView("6");
//生成水平重复表格,下面参数中的6就是水平重复6次的意思。
wzjingwei.cnblogs.com.HorizontalRepeat hrClass = new wzjingwei.cnblogs.com.HorizontalRepeat(dr, 6, ref this.ClassTable, "GetView");
hrClass.Do();
dr.Close();
先定义基类:

































































































































































































//调用方法
IDataReader dr = null;
//被关注最多的6个
DataAccessLayer.MainDataAccess MDA = new DataAccessLayer.MainDataAccess();
//获得数据
dr=MDA.GetView("6");
//生成水平重复表格,下面参数中的6就是水平重复6次的意思。
wzjingwei.cnblogs.com.HorizontalRepeat hrClass = new wzjingwei.cnblogs.com.HorizontalRepeat(dr, 6, ref this.ClassTable, "GetView");
hrClass.Do();
dr.Close();