您的位置:首页 > 其它

将一个dataTable拆成多个

2010-06-10 20:38 204 查看
最近遇到一个问题害我郁闷了很久,在一个页面里分类显示数据,每一个大类里的数据是动态取得。打算将它分三列显示,希望得到的效果: 显示成了:

AA CC EE AA CC EE

aaa cc ee aa cc ee

aaa cc ee aa cc ee

BBB cc ee cc ee

bbb cc ee cc ee

bbb DD ee ee

bbb dd FF BB DD FF

ff bbb dd ff

ff bbb ff

思索良久结果发现我是循环大类的dataTable将每一大类放在一个div中,设置他的宽度是整个div 的1/3将它的float属性设为了left,属性margin-top:0px;,结果就成了右边的那样式。查看页面源码时发现BB的那个div的margin-top是针对EE的那个div的。这样就麻烦了,我的将页面划分成左、中、右三块,然后再在每个div中填数据,可是大类就一个dataTable啊。只好将这DataTable拆分三个了。

拆分的步骤如下:

DataTable secClassTb = UserAppClassList(fir_id);//得到大类的DataTable

secClassTb.DefaultView.Sort = "sec_shortening asc";//排序

//为了显示三列

DataTable appTable = new DataTable();

DataTable appTable2 = new DataTable();

DataTable appTable3 = new DataTable();

//qing 添加于6-8,6-10改

DataTable dt1 = new DataTable();

DataTable dt2 = new DataTable();

DataTable dt3 = new DataTable();

DataRow dr;

//将大类的DataTable里的列加入到新建的DataTable中去

foreach (DataColumn c in secClassTb.Columns)

{

dt1.Columns.Add(c.ColumnName, c.DataType);

dt2.Columns.Add(c.ColumnName, c.DataType);

dt3.Columns.Add(c.ColumnName, c.DataType);

}

//将secClassTb拆分成三个DataTable

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

{

object[] rowItems = new object[secClassTb.Columns.Count];

if (i % 3 == 0)

{

//可以用这种方法添加行,因为我没成功,没有用它

//object o1 = secClassTb.Rows.Count>i ? secClassTb.Rows[i].ItemArray : new object[secClassTb.Columns.Count];

// dr = dt1.NewRow();

//dt1.Rows.Add(o1);

dr = dt1.NewRow();

dr["sec_classname"] = secClassTb.Rows[i].ItemArray[0];

dr["sec_shortening"] = secClassTb.Rows[i].ItemArray[1];

dr["id"] = secClassTb.Rows[i].ItemArray[2];

dt1.Rows.Add(dr);

}

else if (i % 3 == 1)

{

dr = dt2.NewRow();

dr["sec_classname"] = secClassTb.Rows[i].ItemArray[0];

dr["sec_shortening"] = secClassTb.Rows[i].ItemArray[1];

dr["id"] = secClassTb.Rows[i].ItemArray[2];

dt2.Rows.Add(dr);

}

else if (i % 3 == 2)

{

dr = dt3.NewRow();

dr["sec_classname"] = secClassTb.Rows[i].ItemArray[0];

dr["sec_shortening"] = secClassTb.Rows[i].ItemArray[1];

dr["id"] = secClassTb.Rows[i].ItemArray[2];

dt3.Rows.Add(dr);

}

}

//排序

dt1.DefaultView.Sort = "sec_shortening asc";

dt2.DefaultView.Sort = "sec_shortening asc";

dt3.DefaultView.Sort = "sec_shortening asc";

//数据源的绑定

repDalei.DataSource = dt1;

repDalei.DataBind();

//DataList1.DataSource = secClassTb;

//DataList1.DataBind();

//循环每个二级分类,获得获得它的所有项

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

{

//得到分类的key直

string appDec = dt1.Rows[i].ItemArray[1].ToString();

//得到应用的Table

appTable = InsertDeskTopList(UserAppList(appDec), appDec);//appTable = UserAppList(appDec);

//数据绑定

((DataList)repDalei.Items[i].FindControl("DataList2")).DataSource = appTable;

((DataList)repDalei.Items[i].FindControl("DataList2")).DataBind();

appTable.Clear();

}

//数据源的绑定

repDalei2.DataSource = dt2;

repDalei2.DataBind();

//DataList1.DataSource = secClassTb;

//DataList1.DataBind();

//循环每个二级分类,获得获得它的所有项

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

{

//得到分类的key直

string appDec = dt2.Rows[i].ItemArray[1].ToString();

//得到应用的Table

appTable2 = InsertDeskTopList(UserAppList(appDec), appDec);//appTable = UserAppList(appDec);

//数据绑定

((DataList)repDalei2.Items[i].FindControl("DataList3")).DataSource = appTable2;

((DataList)repDalei2.Items[i].FindControl("DataList3")).DataBind();

appTable.Clear();

}

//数据源的绑定

repDalei3.DataSource = dt3;

repDalei3.DataBind();

//DataList1.DataSource = secClassTb;

//DataList1.DataBind();

//循环每个二级分类,获得获得它的所有项

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

{

//得到分类的key直

string appDec = dt3.Rows[i].ItemArray[1].ToString();

//得到应用的Table

appTable3 = InsertDeskTopList(UserAppList(appDec), appDec);//appTable = UserAppList(appDec);

//数据绑定

((DataList)repDalei3.Items[i].FindControl("DataList4")).DataSource = appTable3;

((DataList)repDalei3.Items[i].FindControl("DataList4")).DataBind();

appTable.Clear();

}

拆成三个DataTable后分别绑定到页面上后问题就解决了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: