Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成具有可变列号的gridview_C#_Asp.net_Sql_Datatable - Fatal编程技术网

C# 生成具有可变列号的gridview

C# 生成具有可变列号的gridview,c#,asp.net,sql,datatable,C#,Asp.net,Sql,Datatable,sql表中的数据如下所示: Name colno remark ---- ----- ------ bill col 1 good bill col 2 ok bill col 3 triff bill col 4 A1 bob col 1 poor bob col 2 excellent bob col 3 ok bob col 4 B+ bert col 1

sql表中的数据如下所示:

Name    colno    remark
----    -----    ------
bill    col 1    good
bill    col 2    ok
bill    col 3    triff
bill    col 4    A1
bob     col 1    poor
bob     col 2    excellent
bob     col 3    ok
bob     col 4    B+
bert    col 1    
bert    col 2    no info
bert    col 3    pass
bert    col 4    C-
Name     col 1    col 2      col 3    col 4
Bill     good      ok        triff     A1
Bob      poor     excellent  ok        B+
bert              no info    pass      C-
Name    colno    remark
----    -----    ------
brenda  col 1    ok
brenda  col 2    ok
brenda  col 3    excellent
boris   col 1    poor
boris   col 2    ok
boris   col 3    ok
baz     col 1    great
baz     col 2    no info
baz     col 3    ok
Name     col 1    col 2      col 3
brenda   ok        ok        excellent
boris    poor      ok          ok
baz      great    no info      ok
我想要一个带有数据绑定的gridview(?),布局如下:

Name    colno    remark
----    -----    ------
bill    col 1    good
bill    col 2    ok
bill    col 3    triff
bill    col 4    A1
bob     col 1    poor
bob     col 2    excellent
bob     col 3    ok
bob     col 4    B+
bert    col 1    
bert    col 2    no info
bert    col 3    pass
bert    col 4    C-
Name     col 1    col 2      col 3    col 4
Bill     good      ok        triff     A1
Bob      poor     excellent  ok        B+
bert              no info    pass      C-
Name    colno    remark
----    -----    ------
brenda  col 1    ok
brenda  col 2    ok
brenda  col 3    excellent
boris   col 1    poor
boris   col 2    ok
boris   col 3    ok
baz     col 1    great
baz     col 2    no info
baz     col 3    ok
Name     col 1    col 2      col 3
brenda   ok        ok        excellent
boris    poor      ok          ok
baz      great    no info      ok
因此,我可以根据需要编辑/插入数据

最要命的是列的数量可以变化,例如在上面的第一个例子中我有4个,但它可以是10到15之间的任何数字。因此,在第二次提取时,数据可能如下所示:

Name    colno    remark
----    -----    ------
bill    col 1    good
bill    col 2    ok
bill    col 3    triff
bill    col 4    A1
bob     col 1    poor
bob     col 2    excellent
bob     col 3    ok
bob     col 4    B+
bert    col 1    
bert    col 2    no info
bert    col 3    pass
bert    col 4    C-
Name     col 1    col 2      col 3    col 4
Bill     good      ok        triff     A1
Bob      poor     excellent  ok        B+
bert              no info    pass      C-
Name    colno    remark
----    -----    ------
brenda  col 1    ok
brenda  col 2    ok
brenda  col 3    excellent
boris   col 1    poor
boris   col 2    ok
boris   col 3    ok
baz     col 1    great
baz     col 2    no info
baz     col 3    ok
Name     col 1    col 2      col 3
brenda   ok        ok        excellent
boris    poor      ok          ok
baz      great    no info      ok
给一张这样的桌子:

Name    colno    remark
----    -----    ------
bill    col 1    good
bill    col 2    ok
bill    col 3    triff
bill    col 4    A1
bob     col 1    poor
bob     col 2    excellent
bob     col 3    ok
bob     col 4    B+
bert    col 1    
bert    col 2    no info
bert    col 3    pass
bert    col 4    C-
Name     col 1    col 2      col 3    col 4
Bill     good      ok        triff     A1
Bob      poor     excellent  ok        B+
bert              no info    pass      C-
Name    colno    remark
----    -----    ------
brenda  col 1    ok
brenda  col 2    ok
brenda  col 3    excellent
boris   col 1    poor
boris   col 2    ok
boris   col 3    ok
baz     col 1    great
baz     col 2    no info
baz     col 3    ok
Name     col 1    col 2      col 3
brenda   ok        ok        excellent
boris    poor      ok          ok
baz      great    no info      ok
我已经研究了SQLPivot,但我不想以任何方式总结数据,它只是每个记录的一个文本字段。所以我认为这种查询不起作用:

select * from myData
pivot (someAggregateFunctionThatIDontNeed(colNo) for colNo_ButNotBeingAggregated in (variableNoOfColumns)) as notAnAvergageJustText
我曾尝试将一个数据表从多个sql提取片段逐段构建到数据表中,然后循环(这是可行的,但我不知道如何在循环之后绑定数据)


有什么想法吗?我已经用藤条打了四天了,我被难住了。妻子来为你做周日晚餐的提议仍然有效……

你需要一个支点。在“pivot”MSDN中查找SQL,或用谷歌搜索它。请准备花一点时间来解决这个问题,语法并不简单。

您是否在SQL语句中尝试使用ISNULL来检查没有数据的列?如果没有数据,可以在语句本身中设置默认设置

ISNULL([YOUR FIELD],'Whatever you want to display here')

workingclassmedia,您能举例说明文件在不同的数据、布局等情况下的外观吗。。?听起来你需要做一些像控件中断之类的事情,然后如果你在第一次读取后找到键workitem4,你就知道你有列和数据了。。然后从那里读取/检查item1…item4跳过item1…item4这个词,然后保存数据。。这有意义吗。。?您还可以将该数据放入字符串[]中,并以这种方式对数据进行检查。。或者列表每个sql select的列数保持不变,但每次摘录都会有所不同-我将编辑上面的帖子以进行展开。让我重新表述一下这个问题,这个初始数据最初存储在哪里/来自哪里。。?数据库表或文件..?嗨,DJ,刚刚编辑了我的帖子,解释数据来自sql表,并添加了原始列标题-不确定这是否有帮助?嗨,Ian,我从pivot开始,但这似乎不是正确的方法,因为我不想对数据进行总结(它们是我仍然希望能够添加/编辑的单个注释)我还希望在最后绑定网格数据,这样我就可以更新原始表-或者我是否错误地使用了pivot?Ian,在上面的文章中添加了我的pivot示例-如果您认为可以让它工作,请告诉我…在这种情况下,绑定将很困难。您确实需要将每个“项”放入自己的实体中,并带有“name”、“value(comment)”和colNr,可能是一个临时表。然后使用select Distinct查找列数,在临时表上创建一个动态查询,并为单元格创建特定的update语句,将名称和colNr作为参数……然后将网格绑定到Resultchers Ian,这是我已经开始的路线,但它非常灵活。到目前为止,我无法对你的答案投赞成票(没有足够的代表Grrr),你知道为什么我的问题被否决了吗?我认为它是有用的,清晰的,显示了研究的努力等等。。。这一要求在教育中相当普遍——你设置了一个单元,该单元的标准数量将不同于另一个单元,但当你来标记它时,你只需要该单元的网格,左边是名称,顶部是该单元的标准。事实上,现在我已经考虑过了,当然,这是任何拥有可变列电子表格的人的常规要求,他们需要将其放入/移出数据库?不知道我仍然不知道为什么我的问题会被否决,但我们…嗨,伊利诺伊蒂姆-今晚我回来时会查一查,但这似乎是有道理的-在这个阶段,我只是想让网格自动构建,稍后我会担心绑定问题…illinoistim-这被证明是一场噩梦-见我下面对IanP的评论-我通过在电子表格中敲打数据(脆性),保存为CSV,导入到数据表中,解决了这个问题,然后在一个循环中循环以构建另一个DT,然后将该DT喷射到sql数据库中-意式混乱。一定有人用更巧妙的方式做了这件事……欢迎大家!就个人而言,如果您能够构建更好的SQL表,我会将该表分为至少两个不同的表。如果您无法做到这一点,我只会对每一列使用ISNULL sytax。这样,它就可以在你的桌子上空着。为了获得所需的结果,可能需要使用WHERE语句在表中循环。然后你可以把[Name]=“Brenda”的位置分割出来。