我想通过数据库查询出来的结果来动态生成datagrid的列,比如我查询表A中的yewu字段,查出的结果有业务1,业务2,业务3三项。我想把业务1,业务2,业务3这三项作为datagrid的三列,而且作表头

解决方案 »

  1.   

    Datagrid本身就支持动态生成列你只需要把数据集绑定至datagrid即可
      

  2.   

     
          DataTable tbl = new DataTable();
          //从数据库得到数据。       DataTable gridDataSource = new DataTable();
           foreach(DataRow row in tbl.Rows)
          {
            DataColumn col = new DataColumn((string) row["yewu"]);
            gridDataSource.Columns.Add(col);
          }      DataGridView grid = new DataGridView();
          grid.DataSource = gridDataSource;
      

  3.   

     SqlCommand cmd = new SqlCommand("select yewu from table where id=1", cn);
                SqlDataReader dr = cmd.ExecuteReader();            ArrayList list = new ArrayList();            while (dr.Read())
                {
                    list.Add(dr.GetString(0));
                }            dataGridView1.ColumnCount = list.Count;
                for (int i = 0; i < list.Count;i++ )
                {
                    dataGridView1.Columns[i].HeaderText = list[i].ToString();
                }
      

  4.   

    楼上的老兄,能不能说得清楚点啊,我是菜鸟,那dataGridView 是怎么来的啊?我用的是VS2003
      

  5.   

     dataGridView1 是空间对象..就是你拖到窗体上的哪个datagrid
    B\S里叫datagrid,C\S叫dataGridView,用法差不多.
      

  6.   

    唧唧嘎嘎的方法确实可以,但如果我的表A里还有一列result,里面有值1,2,3分别对应的是业务1,业务2,业务3的三个值。那我怎么把它显示到添加的列里面呢?
      

  7.   

    DataColumn.HeadText = "业务1"类似......   foreach里面再指定下DataColumn.HeadText属性就可以了。
      

  8.   

    生成三列后再读result里的数据到业务1,业务2,业务3列呀,只要添加进去就行了。添加方法就是GridView的用法,研究一下即可。
      

  9.   

    我觉得还是用动态sql语句直接查询出来横排即可。去搜索横排方面的资料,只是提供思路,可以解决你的问题
      

  10.   

    那如果我的这动态添加的三列业务1,业务2,业务3是要添加在一个已有的datagrid里面该怎么写呢?就是说datagrid里还有别的列,而且这些列和这三个业务列有关系的,还请大家赐教
      

  11.   

    如果你直接把你的数据源绑定到Grid上,你只要在你的数据源中加入者3行就可了吧。如果是表,直接在表中加3列即可。
      

  12.   

    上面不是已经讲了怎么加吗。再贴一次。     
     DataTable tbl = new DataTable();
          //从数据库得到数据。       DataTable gridDataSource = new DataTable();  //DataGrid的DataSource 
          //初始化数据源。
          // 可以有很多行纪录。
          foreach(DataRow row in tbl.Rows)  //可以加很多列啊。新列数等于表的行数。
          {
            DataColumn col = new DataColumn((string) row["yewu"], typeof(int));  //或者你想要得Type
                                                                              // 也可以来源于数据库。
            col.DefaultValue = 0;
            gridDataSource.Columns.Add(col);
          }      DataGridView grid = new DataGridView();
          grid.DataSource = gridDataSource;
      

  13.   

    传不同的sql语句生成不同的datatable,dataset作为datagridveiw的数据源就行了,
    简单的东西!
      

  14.   

    回11楼,做到这一点也行
    用for生成和你生成的数据集一样的列,再加入datagridview中
    就是说先生成一个数据表,把表的列加入到datagried中去
      

  15.   

    DataTable tbl = new DataTable();
          //从数据库得到数据。       DataTable gridDataSource = new DataTable();  //DataGrid的DataSource 
          //初始化数据源。
          // 可以有很多行纪录。
          foreach(DataRow row in tbl.Rows)  //可以加很多列啊。新列数等于表的行数。
          {
            DataColumn col = new DataColumn((string) row["yewu"], typeof(int));  //或者你想要得Type
                                                                              // 也可以来源于数据库。
            col.DefaultValue = 0;
            gridDataSource.Columns.Add(col);
          }      DataGridView grid = new DataGridView();
          grid.DataSource = gridDataSource;列是能添加进去,但是列里面的值怎么加进去啊? col.DefaultValue = 0;是将其初始化为0啊,但是我想在初始化时候把值也给他。现在运行出来是这样的:
    时间            业务1           业务2
    20071112        0              0
    20071113        0              0        
    而业务里对应的值,应该是一个数据表里某天的某种业务的个数,比如20071112这天业务1数量是3,业务2数量是4,那对应运行出来的应该是:
    时间             业务1          业务2
    20071112        3              4请问大家要达到这个目的,col.DefaultValue应该怎么样赋值?
      

  16.   

    是winform 还是 asp.net?
    winform 用强类型dataset就可以了
    asp.net 用自定义类 继承集合 绑定就可以了
    也可以把数据放table里绑定
      

  17.   

    能不能说清楚点,大哥,是Asp.net
      

  18.   

    *.aspx:
    <form id="Form1" method="post" runat="server">
    <asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>
    </form>
    *.aspx.cs
    DataTable dt=new DataTable();
    //获取你要的那个table资料,赋值给dt
    this.DataGrid1.DataSource=dt;
    this.DataGrid1.DataBind();
      

  19.   

    我看直接用SQl转换行转为列好了