请问如何让DataSet中的一列数据在DataGridView显示时划分到几个不同的列中(根据另一列的数值)?

问题描述

Sql中列表为StuIDTestIDScoreStu1test160stu1test270stu2test180stu2test290想让它显示为StuIDTest1Test2stu16070stu28090想要dataGirdview与原始dataset保持绑定,好方便直接修改数据后更新请教如何实现,SQLdataView什么方法都好,使用其它控件也可以先谢过了

解决方案

解决方案二:
自己顶下,在线求解
解决方案三:
直接在数据库生成那样的格式不是更好吗?1、建立一张表,记录stuid2、读取所有不同的testid,在把每列通过动态sql添加到1步建立的标3、将所有不同的stuid保存之1部建立的标4循环sql表,执行update操作更新相对应的字段。第二种方式,在程序中根据内容自动生成datagridview的column。
解决方案四:
太感谢了....不过,刚刚开始学习C#和SQL..动态表这个..不是很明白我自己去查查看能帮忙具体说下如何在程序中自动生成绑定dataGridView的column嘛?
解决方案五:
不太清楚你SQL表的结构,不过推测StuID,TestID应该被作为表级主键确认这两列是主键是为了保证这表里的记录是按照StuID,TestID的唯一组合做排序的,有这样的排序就方便了不是主键的话就自己按这两列排下序1、添加一个新的表XXX.tabels.add(newdatatable)2、遍历原表的所有记录,找到所有的TestID,如果确定数目的话这步都不要了。先假设就只有两个个值。3、在新添加的表里添加几个列XXX.tabels(x).columns.add("列名"),几个列名分别是StuID,Test1,Test24、由于原表中的记录是排好序的,你就很容易发现规律,写成伪代码的话就很容易看清楚新表.rows(0)item(1)=原表.rows(0).item.(2)新表.rows(0)item(2)=原表.rows(1).item.(2)新表.rows(1)item(1)=原表.rows(2).item.(2)新表.rows(1)item(2)=原表.rows(3).item.(2)新表.rows(2)item(1)=原表.rows(4).item.(2)新表.rows(2)item(2)=原表.rows(5).item.(2)一眼就清楚了,原表的列号永远是2,行号/2,商取整就是新表行号;(2-行号%2)就是新表列号不多写了,很容易一个循环就结束了,随便写写for(x=0;x<原表.rows.count;x++){新表.rows(int(x/2))item(int(2-x%2))=原表.rows(x).item.(2)}很久不写C语法,一直在用VB。NET,代码可能有写错,哈,偶就不测试了你可以发现要写的东西很少添加表添加N个列写上这么个FOR如果TestID的值不止2个,那么有多少个就把FOR里面的2换成几就完了
解决方案六:
DEBUGfor(x=0;x<原表.rows.count-1;x++)
解决方案七:
不过,这样的话就不能保持原来的绑定了啊。就是说在DataGuidView更改数据之后不能直接用CommandBuilder生成命令直接update了。。手动upDate的话。。。对我又是个挑战。。长长的一篇。。。太感谢了,我去试试看~~
解决方案八:
显然。。。。你UPDATA前,把循环反过来用一下,就能把值赋回去。。。也是一个FOR搞定的事情对付有规律的表还是比较方便的.for(x=0;x<原表.rows.count;x++){原表.rows(x).item.(2)=新表.rows(int(x/2))item(int(2-x%2))}当然假设是你没添加新行的前提下,嘿嘿。。。各种情况各种应付
解决方案九:
我想想,或者可以这么写,思路是先把原表CLEAR掉,保留表结构,删除所有数据,然后再把新表中的数据对应回原表这样就能不管新表有没有添加行了。。。。反正我经常不管三七二十一的做事,太过复杂的事情咱就把他一次清理掉重来,呵呵,符合我的作风。。。效率问题的说明见最后。。。原表.cleardatarowdr=原表.newrowforx=0to(新表.rows.count-1)*2{dr("StuID")=新表.rows(x/2).item(0)dr("TestID")=新表.columns(X%2+1).columnnamedr("Score")=新表.rows(x/2).item(X%2+1)原表.rows.add=dr)没测试,所以边写说明边验证下思路:1、首先删了原表里所有的行2、还是假设是2个TestID的值,那么新表一行对应的就是原表中的两行,声明的X是原表中需要创建的行数所以FOR是从0到新表行数的两倍,因为是从0开始,所以减1后再乘2这样调用X的时候使用(x/2),那么X次和X+1次循环的时候,X/2的值是相同的,也就是说X次和X+1次循环的调用的是新表中的同一行3、循环中先声明一个新的数据行,并从“原表.newrow”中创建与该表具有相同架构的新DataRow4、原表中的新创建的这一行,StuID就是新表中的StuIDTestID是新表中列1或者列2的列名,那么也就是说偶数次循环的时候是列1,奇数次循环的时候是列2所以得出X次循环,使用的列是(X%2+1)Score对应的是这X行,(X%2+1)列的值,所以Score=新表.rows(x/2).item(X%2+1)5、这一行值赋完了,就ADD到原表6、当然前提也是新表中的行是排序后的,排序这个不难吧。。。dataview.Sort,按StuID排就好了7、还是没测试。。。冷死了,休息完了继续工作8、诸多大虾肯定要批评我的做法效率太差,哈哈,我承认的,谁让我是菜鸟呢,嘿嘿9、我只是想提出解决问题有多种思路,有时候不一定全要靠调用现成的东西,自己写写算法其实很有趣10、希望能起到抛砖引玉的效果11、希望不要挨批。。。。12、实在太冷了。。。赶紧做完事赶紧回床。。。。13、冷。。。还是很冷。。。。
解决方案十:
继续DEBUG。。。。哎~forx=0to(新表.rows.count-1)*2应该是forx=0to(新表.rows.count-1)*2-1也就是forx=0to(新表.rows.count*2-1)还是因为是从0开始的。。。

时间: 2024-09-20 22:21:46

请问如何让DataSet中的一列数据在DataGridView显示时划分到几个不同的列中(根据另一列的数值)?的相关文章

django-html中后台获取的数据如何通过控件的事件传递给script的响应函数中

问题描述 html中后台获取的数据如何通过控件的事件传递给script的响应函数中 我在页面的中写了一个函数,这个函数用settimeout函数来定时执行一些东西.</p> <p>然后在页面的Page_Load中读取了一个XML文件,请问我该怎么样才能把Page_Load中读取的信息传递给<Script>中的这个函数?</p> 解决方案 你说得不清不楚的.你说的后台是什么后台?php? jsp? asp.net? 还是说你没搞清楚后台.前端概念~~ 如果是后

Visual C++中实现对图像数据的读取显示

  在利用VC进行数据库编程时,经常需要处理数据库中的图像数据,将该图像从数据库中读取出来并显示,图像数据与文本字段不同,它是作为OLE字段在数据库中存储,通过数据集对象的成员变量自动交换得到的图像数据,得到的数据并不能直接显示,如何处理图像数据,一直是数据库编程中的一个难点,目前关于VC进行数据库编程的资料不少,但很少涉及图像数据的操作,笔者针对一现状,结合自己开发的一个项目,解决了如何显示数据库中的图像这一问题,本文以操作ACESS数据库为例子,讲解一下自己的实现思路,希望对爱好VC编程的朋

datatable中有列数据是guid类型的 如果把这个datatable 插入到临时表中

问题描述 如果临时表中有个字段gid是Guid类型的如何把Datatable中gid列的数据插入到临时表中 解决方案 解决方案二:临时表?数据库的?全局临时表?解决方案三:不知道你用的是什么数据库,也不知道什么数据库有guid类型.假设是SqlServer吧,SqlServer中没有guid类型,一般用varchar或uniqueidentifier存放guid.如果是uniqueidentifier类型,直接写:insertinto临时表(gid)values('11111111-2222-3

如何在Excel中快速辨别两列数据是否一致的四种方法介绍

  我们以下表的数据为例,具体的介绍一下操作方法. 方法一: Excel分别对AB列两列数据对比,比如A2=B2,就返回相同,否则返回不相同. D2公式为:=IF(C2=B2,"相同","不同"),这样就可以实现excel两列对比,判断C2和B2是否相同,如果相同就返回值"相同",反之则显示不同. 同样的方法比较其它数据,结果如下图: 不过细心的朋友会发现,B5和C5实质上有大小写区分的,因此使用这个公式不是完全准确.Excel中exact函数可

在数据库或excel中存在两列数据,如何自动实现生成图形化

问题描述 在数据库或excel中存在两列数据,如何自动实现生成图形化 在数据库或excel中存在两列数据,比如a对应ba对应c,b对应c.自动实现生成图形化,用方框和箭头表示,数据不重复.应该怎么做呀 解决方案 遍历数据,首先找到所有的节点,以方框的形式画出来,并且记下坐标.然后再读取关系数据,根据坐标绘制箭头.为了图形美观,你需要对这些节点排序,找到总交叉或者线长最小的,当然穷举可以做到,不过当数据量大的时候,你就需要用诸如退火算法或者遗传算法之类的启发式算法来求解了. 解决方案二: exce

Excel表格多列数据合并动画教程

<Excel2003入门动画教程65.Excel表格多列数据合并>. 演示动画 操作步骤 有分列就有合并,如果需要将Excel表格中的多列数据显示到一列中,可以用合并函数来实现. 如果希望将B列数据和C列数据组合型显示到D列中(中间添加一个"-"符号),一个"&"就搞定了. 选中D1单元格,输入公式:=B1&"-"&C1,确认一下;然后用"填充柄"将其复制到D列下面的单元格中即可. 提示 如

特定位置数据读取-C#用listView读取文件的后几列数据

问题描述 C#用listView读取文件的后几列数据 我的文件类型是txt的,需要读取该文件的后三列内容,如图: 将这些数据导入listview,该如何执行? 主要是不知道如何读取后三列求大神指教,谢谢! 解决方案 用stream流读取存到字符数组中 public static string[] Read(string path) { StreamReader sr = new StreamReader(path, Encoding.Default); String line; string l

表格树 收缩-ligerui中关于treegrid(表格树)初始化时如何让树是收缩的

问题描述 ligerui中关于treegrid(表格树)初始化时如何让树是收缩的 ligerui中关于treegrid(表格树)中在第一次初始化的时候如何让树是收缩的而不是展开的.我看了一下关于他的API,没有介绍是如何关闭的,请问有没有遇到的,如何处理的! 解决方案 采用延迟加载,先初始化最外层的节点,然后一层一层的加载.

文件读取-c++ 修改文件中的一条数据(不完全读出再重新写入)

问题描述 c++ 修改文件中的一条数据(不完全读出再重新写入) 假设现在文件中存储的是 1 computer 2 computer 3 computer 三条记录, 我想把第一条数据改成 5 computer, 但是想要直接用write在文件首部写入5 computer 把1 computer 覆盖掉,而不是把数据全部读出后修改完再重新写入,就像c语言的 fwrite函数,不知如何操作?谢谢了 解决方案 http://bbs.csdn.net/topics/340168885 fwrite也可以