C#行转列&绑定DGV

c#行转列

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

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

开发要素第一步:

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

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

上图是dsTemp.Tables[0]绑定的DGVtable。也就是初始化加载的效果。

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

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

最后,其实我不想将源码放出来的,因为会的人根本就没有必要看,就能信手拈来。不会的人正好借此机会写一下代码增强印象(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实现行转列,然后评论在上面,供后来者参考。

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

原文地址:https://www.cnblogs.com/JesonBK/p/10314809.html

时间: 2024-10-10 11:16:21

C#行转列&绑定DGV的相关文章

[WinForm] DataGridView绑定DataTable,ComboBox列绑定Dictionary

一  需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面上我们想要显示的是具体的文本内容,以便用户理解使用.所以在从数据库中加载出来的数据DataTable绑定到DataGridView上时,就需要其中一些枚举列采用下拉框,并绑定对应的枚举数据源. 二  具体实现 首先,如果 DataGridView 的 AutoGenerateColumns 为 true 时,

游戏得有活动的场景:代码中多行多列的LinearLayout布局

既然是江湖,总得有一些可以到处跑的地儿. 咱是新手,那就排的简单点,排个几行几列的就完事了.至于到底排个几行几列的,这个倒也说不准. 得,那就不能直接在layout/xml里面直接画了.咋办?也好办,在activity里面通过代码生成布局就可以了. activity_scene_fight.xml 如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

MySQL,排序,统计行转列

表 -- ------------------------------ Table structure for a-- ---------------------------- DROP TABLE IF EXISTS `a`; CREATE TABLE `a` ( `type` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `val` varchar(255) DEFAULT NULL ) ENGINE=InnoDB

GreenPlum之数组合并取交集及行变列、列变行函数

--1.利用INTERSECT关键字数组之间交集函数 CREATE OR REPLACE FUNCTION array_intersect(anyarray, anyarray) RETURNS anyarray AS $$ SELECT ARRAY( SELECT UNNEST($1) INTERSECT SELECT UNNEST($2)); $$ LANGUAGE SQL; select array_intersect(array[1,2,3],array[2,3,4]); --2.行变列

行转列、列转行

一:行转列 模式:N行转一列  本实验N取31.建表SQL> create table grade(id int,name varchar2(10),subject varchar2(10),grade number(3));2.插入实验数据insert into grade values(1,'Andy','Yuwen',11);insert into grade values(2,'Andy','Math',22);insert into grade values(3,'Andy','Eng

table行转列

table行转列 摘要 在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody.每封邮件又没什么规律,用正则表达式来匹配内容并不合适,另外又要保持原邮件的格式.这个确实很难统一.目前是使用iframe标签,将原邮件的html在iframe中展示.但问题又来了,如果邮寄中有大表格,大图片,如何保持邮件内容自适应? 思考 通常的做法是在head中添加meta标签 <meta name="viewport&quo

Oracle行转列、列转行的Sql语句总结(转)

多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以",&quo

SQL Server 行转列

语法: PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现 完整语法: table

SQLServer处理行转列和列转行

掌握SQL Server 行转列和列转行 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例 WITH T AS ( SELECT 1 as TeamId,'测试团队1' as Team,80 'MEN',20