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

        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++;
                   }
                }
            }
}
 
 
绑定后的结果如下:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

orangapple

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

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

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

打赏作者

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

抵扣说明:

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

余额充值