使用可变列号构建gridview

时间:2013-01-19 19:00:01

标签: 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    
bert    col 2    no info
bert    col 3    pass
bert    col 4    C-

我想要一个带有数据绑定的gridview(?),其布局如下:

Name     col 1    col 2      col 3    col 4
Bill     good      ok        triff     A1
Bob      poor     excellent  ok        B+
bert              no info    pass      C-

所以我可以根据需要编辑/插入数据。

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

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

我已经探索了sql pivot,但我不希望以任何方式汇总数据,它只是每个记录的单个文本字段。所以我不认为这种查询会起作用:

select * from myData
pivot (someAggregateFunctionThatIDontNeed(colNo) for colNo_ButNotBeingAggregated in (variableNoOfColumns)) as notAnAvergageJustText

我已经尝试从多个sql-extracts-into-datatables-then-loop构建一个DataTable零碎(这很有效,但我无法弄清楚如何绑定数据)

有什么想法吗?我已经四天了,我很难过。妻子来为你的周日晚餐做准备的提议仍在......

2 个答案:

答案 0 :(得分:0)

你需要一个支点。查找SQL的“pivot”MSDN,或google它。准备花一点时间让你绕过它,语法并不简单。

答案 1 :(得分:0)

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

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