(一)如何将一列多行(1列12行)转换成多列多行(3列4行)?(asp.net)(06年的文章,技术已过时)

本文介绍了一种将DataTable中的一列数据转换为多行多列的方法,并通过具体代码实现了数据的重新组织与展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        1.     首先将type表读入到DataSet

代码略。DataSet的实例名为“infoDs”,DataTable名为” type”.
2. 在”infoDS”中再增加一个表,对其每行的每列进行赋值,代码如下:
说明:标记为蓝色的代码与本篇的内容无关,与设置背景色的内容有关。
int j = 0;
        DataTable myDataTable;
        DataRow myDataRow;
        ArrayList myAL = new ArrayList();
        ArrayList strAL = new ArrayList();
        //该函数将"type"表中一列转换成多行多列
        public void addTable()
        {
            //创建一个表"newTable"
            myDataTable = new DataTable("newTable");
            DataColumn myDataColumn = new DataColumn();
            //该函数创建"newTable"表的3列
            addColumn(myDataColumn);
         
            //获得DataTable["type"]中的行数
            int tCount = infoDs.Tables["type"].Rows.Count;
 
            //计算DataTable["newTable"]中的行数(如果DataTable["type"]中的行数是10-12行,则该表就是4行3列)
            int rowCount = 0;
            if(tCount%3>0)
            {
                rowCount = tCount/3+1;
            }
            else
            {
                rowCount = tCount/3;
            }
 
            //该函数给表newTable中的每行每列赋值
            addCloumnValue(tCount,rowCount);
 
            infoDs.Tables.Add(myDataTable);
            DataGrid1.DataSource = infoDs.Tables["newTable"].DefaultView;
            this.DataGrid1.DataBind();
 
            //以下两个函数是设置guid和string类型的背景色
            setGuidColor(myAL);
            setStringColor(strAL);
          }
 
        //该函数创建"newTable"表的3列
        public void addColumn(DataColumn myDataColumn)
        {
            for(int z = 1; z<4; z++)
            {
                string cloumnName = "cloumn" + z.ToString();
                myDataColumn = new DataColumn();
                myDataColumn.DataType = System.Type.GetType("System.String");
                myDataColumn.ColumnName = cloumnName;
                myDataColumn.ReadOnly = false;
                myDataColumn.Unique = false;
                myDataTable.Columns.Add(myDataColumn);
            }
        }
 
        //该函数给表newTable中的每行每列赋值
        public void addCloumnValue(int tCount,int rowCount)
        {
            //给每行赋值
            for(int i = 0; i<rowCount; i++)
            {
                myDataRow = myDataTable.NewRow();
                myDataTable.Rows.Add(myDataRow);
                //给每行的每列赋值
                for(int z = 1; z<4; z++)
                {
                   string cloumnName = "cloumn" + z.ToString();
                   if(j<tCount)
                   {
                       myDataTable.Rows[i][cloumnName] = infoDs.Tables["type"].Rows[j][0].ToString();
                       //判断该字段是否是“guid"类型
                       //Rows[j][1],j代表行,1表示是第二列
                       //ArrayList保存类型guid和string在”type"表中的序列号,如guid就是3,4,5,6; string就是10,11
                       if(infoDs.Tables["type"].Rows[j][1].ToString() == "guid")
                       {
                           myAL.Add(j.ToString());
                       }
                       //判断该字段是否是“string"类型
                       if(infoDs.Tables["type"].Rows[j][1].ToString() == "string")
                       {
                           strAL.Add(j.ToString());
                       }
                       j++;
                   }
                }
            }
}
 
 
绑定后的结果如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orangapple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值