如题,做个小东西遇到瓶颈了,求大神们指导。。
在数据库中查询出的结果是一个动态的sql数据集,也就是说查询结果集的列数是不定的,如图,查询结果的列还可能会出现更多的检测项目,但是目前在.net中数据控件都没法根据数据集自动拓展列数,水晶报表里面也不知道怎么弄,大神们给点思路,看这个问题怎么处理
SQL行业数据.NET数据库控件

解决方案 »

  1.   

    除非你设置grid自动创建列,但是列标头文字要处理一下,报表,因为是做好的模板,所以不能扩展,你可以自己写一个打印grid的功能或用第三方的打印
      

  2.   

    那个最高级的控件Grivew是可以自动拓展列数的。
    你只要把那个什么属性设置为true就可以了,一个叫自动生成列的属性,你自己在工具里查一下然后,你的SQL语句得改一下,就是为每一列定义别名select [ph] as 'PH值', [water] as '含水率' .......................
      

  3.   


    我的语句是一个动态sql语句,这个语句貌似没法赋值给gridview 的selectcommond,语句如下:
    declare @sql varchar(8000)
    select @sql = isnull(@sql + '],[' , '') + item_name from tb_chemistry_item_value group by item_name
    set @sql = '[' + @sql + ']'
    exec ('select * from (select ordernum,value,item_name from tb_chemistry_item_value group by ordernum,value,item_name) a pivot (max(value) for item_name in (' + @sql + ')) b')
    是从下面这个表里拼接过来的数据
      

  4.   

    你将查询出来的datatable或是dataset赋给gridview就可以了...gridview默认是动态创建列的..
      

  5.   

    我的语句是一个动态sql语句,这个语句貌似没法赋值给gridview 的selectcommond,语句如下:
    declare @sql varchar(8000)
    select @sql = isnull(@sql + '],[' , '') + item_name from tb_chemistry_item_value group by item_name
    set @sql = '[' + @sql + ']'
    exec ('select * from (select ordernum,value,item_name from tb_chemistry_item_value group by ordernum,value,item_name) a pivot (max(value) for item_name in (' + @sql + ')) b')
    是从下面这个表里拼接过来的数据

    嗯嗯,我知道你的语句是拼凑的,也就是你的数据集里的列是不固定的
    gridview控件是可以帮你自动生成列的,也就是你有多少列,它就显示多少列,列的标题就是你的SQL字段名,所以我让你弄个列的别名,你每次把返回来的结果绑定到gridview控件的DataSource属性就可以了。AutoGenerateColumns="True" 就是这个属性了,它指示是否自动生成列至于你说的gridview 的selectcommond,我一下子没记起来这个控件的这个属性了
    不过假如你是使用SqlDataSource控件的话,你后台可以代码显示给它赋值,这个控件是一个对象,你通过它的ID就可以了
      

  6.   

    好吧,在gridview里面解决了,嘿嘿。。
      

  7.   


    用gridview必须承受速度慢之痛苦
      

  8.   


    用gridview必须承受速度慢之痛苦
    数据量不大,还算好。。