有这样一个问题:
两张表,分别如下:
表1                                    表2
   id       Name1            Name2   id   value
   01        aaa              AAA    01     1
   02        bbb              AAA    02     2
                              BBB    01     3
                              BBB    02     4现在想用DataGridView动态创建这样的表
Name2     aaa      bbb
 AAA       1        2
 BBB       3        4请问如何实现DataGridView的维护
得到正确回答后马上结分

解决方案 »

  1.   

    要搞定DataGridView,就要先搞定DataTable,然后换成DataSet,用DataSet绑定DataGridViewprivate DataSet MergeTable(DataSet dsColumn, DataSet dsValue)
    {
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    DataColumn dc = new DataColumn();// 加入第一列
    dc = new DataColumn("Name2",(Type)"String");
    dt.Column.Add(dc);// 根据表1加入其他列
    foreach (DataRow dr in dsColumn.Rows)
    {
    dc = new DataColumn(dr["ColumnName"].ToString(), (Type)"Int32");
    dt.Columns.Add(dc);
    }
    }
    // 这时候,新的DataTable已经建立起来了,格式为
    // Name2 aaa bbb 表格是空的
    // 写入新值,写到DataTable dt中,偶就不写了……
    // 装载数据表
    ds.Tables.Add(dt)
    return ds
    }
      

  2.   

    大致思路是,取得表1中Name1 字段内容,根据内容创建对应类,然后生成一个DataTable。此外根据表1中字段 Name1对应的id来匹配表2中对应id  ,然后取得表2中value列的值。楼主,貌似难度不大,只要实现成代码就行了。
      

  3.   

    private DataSet MergeTable(DataSet dsColumn, DataSet dsValue)应该为private DataSet MergeTable(DataTable dsColumn, DataTable dsValue)
      

  4.   

    就在适配器Fill()时传入的sql语句用联合查询撒
    select b.Name2,a.Name1 from 表2 as b inner join 表1 as a on(a.id=b.id)
      

  5.   

    如果可以的话直接在数据库里生成一个view(源自你要得两张表),然后直接给DataGridView使用
      

  6.   

    楼主可以先动态生成DataTable,然后添加到DataGridView上
    这样是最好的方法
      

  7.   

    仔细看了下二楼兄弟写的代码,没看明白dsvalue这个DataSet里放的是什么,还请明示。
    guqst兄弟说的view是个什么,没用过,能不能具体讲讲。
    其实生成表头问题并不大,我是直接通过读取数据库获取字段值的方法动态生成各列的,没有用DataSet。
    现在的问题是表1有人维护,表2初始是空的,也就是说DataGridView初始是空的,我希望通过在DataGridView中添加行对表2进行维护。
    还有一个问题,对DataGridView的添加、修改、删除诸位有没有什么好一些的想法,比如说是直接在单元格中修改还是在另一个面板中通过给出各列的值后写入DataTable或直接写入数据库。
      

  8.   


    =================给你一个 容易懂的方法===============================
    string sql="select 表2.Name2, 表1.Name1,表2.Value from 表2 inner join 表1 on 表1.id=表2.id";
    SqlConnection conn = new SqlConnection("Server=.;Database=master;Integrated Security=SSPI");
                SqlDataAdapter da = new SqlDataAdapter(sql,conn);
                DataSet ds = new DataSet();
                da.Fill(ds);this.DataGridView=ds.Tables[0];
      

  9.   

    说下思路:创建第一个表填充你的表1,创建第二个填充你的表2,取出1,2表里面的值用循环控制赋值给表3,把表3绑定到gridview上面。绝对可以的,楼主屡清楚思路绝对做的出来的!!!
      

  10.   

    private DataSet MergeTable(DataTable dsColumn, DataTable dsValue)dsColumn 这个是表1,主要提供列名
    dsValue 这个是表2,主要提供数据这两个表都要从数据库表拿出来转化成DataTable类型。