欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#行转列&绑定DGV

程序员文章站 2022-09-30 20:29:02
c#行转列 今天工作中,恰好写到此处,想起之前第一次行转列的时候,卡壳了好久,今天正好碰上,故而花费几分钟,整理成案例,分享到博客上。 这是个很简单的功能,第一次可以使用案例,后面最好能达到信手拈来的地步。 开发要素第一步: 各种控件的命名要改:这个跟技术能力无关,工作再赶再忙,这个也必须要改,因为 ......

        c#行转列

           今天工作中,恰好写到此处,想起之前第一次行转列的时候,卡壳了好久,今天正好碰上,故而花费几分钟,整理成案例,分享到博客上。

           这是个很简单的功能,第一次可以使用案例,后面最好能达到信手拈来的地步。

           C#行转列&绑定DGV

          开发要素第一步:

                                各种控件的命名要改:这个跟技术能力无关,工作再赶再忙,这个也必须要改,因为改这个会为后面开发省去很多时间。不要觉得改这个是在浪费时间,开发的人员都懂,就不多说了。

demo功能简单介绍:》初始化加载的时候,加载dgvtable,  如何点击行转列按钮,将dgvtable里面的数据,行转列,然后绑定到dgvrowtrascell上,就可以秀出来了。

           C#行转列&绑定DGV

        上图是dstemp.tables[0]绑定的dgvtable。也就是初始化加载的效果。

 

          C#行转列&绑定DGV

         上图是代码部分。dstemp.tables[0]里面的内容见下图。

                 C#行转列&绑定DGV

 

                点击行转列按钮后,见最后效果图(如下图)

                 C#行转列&绑定DGV

 

                 最后,其实我不想将源码放出来的,因为会的人根本就没有必要看,就能信手拈来。不会的人正好借此机会写一下代码增强印象(ps:勤动手,不要懒,智力不行勤来补)。但是一想到当初我初为程序员的那段孤苦无依的日子,总希望有人指点的岁月,因此还是将关键代码放出来应急。切记一定要理解透彻,否则下次遇到还是不会。

public void btnrowtrascell_click(object sender, eventargs e)
        {//行转列:
            //1.先声明一张表table来接收转换后的数据    
            //2.用循环将表头塞入table   
            //3.用循环将数据行列转换,并塞入table
            //4.将table绑定至新dgv上
            datatable table = new datatable();//1.
            for (int i = 0; i < dstemp.tables[0].rows.count; i++)
            { //2.获取表头:此处将第一列当成表头
                string colname = dstemp.tables[0].rows[i][0].tostring();//将每一行的第一列的值 赋值给变量
                //string colname=dstemp.tables[0].rows[i]["列名字段"].tostring(); //这种写法也行,写法不唯一
                table.columns.add(colname);//将变量塞入表头中:这样循环就获取了表头
            }
         
            for (int c = 1; c < dstemp.tables[0].columns.count; c++)//c:cell列的意思  r:row行的意思
            {//按照列循环:如dgv第二列的值,恰好是table的第一行的值
                datarow dr = table.newrow();
                for (int r = 0; r < dstemp.tables[0].rows.count; r++)
                {//3.获取表列的数据
                    dr[r] = dstemp.tables[0].rows[r][c].tostring();//获取每一行单元格的值
                }
                table.rows.insertat(dr, table.rows.count);//将写好的行insert进table
            }
            //4.绑定dgv
            dgvrowtrascell.datasource = table;
        }

 

*其实行转列在sql里面可以一步完成,这就要求对sql的熟练程度相当高。望有缘人看到这段代码的时候,可以拓展一下,用sql实现行转列,然后评论在上面,供后来者参考。

不说了,当误了半小时,要去做今天的开发任务了。