將乙個dataTable拆成多個

2021-05-22 19:24:13 字數 3377 閱讀 3870

最近遇到乙個問題害我鬱悶了很久,在乙個頁面裡分類顯示資料,每乙個大類裡的資料是動態取得。打算將它分三列顯示,希望得到的效果:顯示成了:

aa  cceeaaccee

aaacceeaaccee

aaacceeaaccee

bbbcceeccee

bbbcceeccee

bbbddeeee

bbbddffbbddff

ffbbbddff

ffbbbff

思索良久結果發現我是迴圈大類的datatable將每一大類放在乙個div中,設定他的寬度是整個div 的1/3將它的float屬性設為了left,屬性margin-top:0px;,結果就成了右邊的那樣式。檢視頁面原始碼時發現bb的那個div的margin-top是針對ee的那個div的。這樣就麻煩了,我的將頁面劃分成左、中、右三塊,然後再在每個div中填資料,可是大類就乙個datatable啊。只好將這datatable拆分三個了。

拆分的步驟如下:

secclasstb.defaultview.sort = "sec_shortening asc";//排序

//為了顯示三列

//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直

//得到應用的table

//資料繫結

((datalist)repdalei.items[i].findcontrol("datalist2")).databind();

//資料來源的繫結

repdalei2.datasource = dt2;

repdalei2.databind();

//datalist1.datasource = secclasstb;

//datalist1.databind();

//迴圈每個二級分類,獲得獲得它的所有項

for (int i = 0; i < dt2.rows.count; i++)

//得到分類的key直

//得到應用的table

//資料繫結

((datalist)repdalei2.items[i].findcontrol("datalist3")).databind();

//資料來源的繫結

repdalei3.datasource = dt3;

repdalei3.databind();

//datalist1.datasource = secclasstb;

//datalist1.databind();

//迴圈每個二級分類,獲得獲得它的所有項

for (int i = 0; i < dt3.rows.count; i++)

//得到分類的key直

//得到應用的table

//資料繫結

((datalist)repdalei3.items[i].findcontrol("datalist4")).databind();

拆成三個datatable後分別繫結到頁面上後問題就解決了。。。

多對多拆成兩個 多對一

今天就談談使用多對多的感想。多對多的用處有很多,比如專題和文章,這是常用的新聞系統。乙個專題下有很多文章,同樣乙個文章可以屬於多個專題,那麼這就是多對多,但是如果我們使用hibernate的多對多的話,會出現兩個嚴重的問題 1 多對多基於中間表,那麼中間表是無法操作的。你無法查詢出該專題下的所有文章...

n個平面最多把乙個空間拆成多少個區域

n條直線最多把乙個平面拆成1 n 1 n 2個區域,請問 n個平面最多把乙個空間拆成多少個區域?n 0 這個問題我想了挺久,後來有在網上搜,並且也搜到了很詳細的解答,但是沒有看,我還是希望能自己想出來 其實是覺得看那 麼多字很煩 p 終於在乙個漆黑的夜晚靈光一現,地球 了。答案是什麼並不重要,重要的...

多個DataTable的合併成乙個新錶

有時我們知道了兩個datatable1和datatable2,我們希望將它們合併為乙個新的datatable 下面的例子中命名為了newdatatable 這就分為兩種情況 datatable1和datatable2結構相同 datatable1和datatable2結構不同,下面分別介紹怎麼進行合...