将一个dataTable拆成多个

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

  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后分别绑定到页面上后问题就解决了。。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值