我有一个DataTable,如果想用其创建一个BindingSource,是不是非得这样:
DataSet ds = new DataSet();
            ds.Tables.Add(table);
            BindingSource source = new BindingSource(ds, table);不能直接绑定到DataTable么?感觉创建一个DataSet有点多此一举啊。

解决方案 »

  1.   


    上面讲的方法是可以的,不过感觉为了绑定专门去创建了一个没用的dataset,不知道有没有办法直接绑定到DataTable?
      

  2.   

    DataSet可以看做是一个临时的小型数据库,而DataTable只是数据库中的一个表而已,那楼主说没有数据库要到哪存放表呢?
      

  3.   

    不太明白你的意思.BindingSource 是你自己写的方法吧?要不要创建dataset是你自己决定的.
    一个dataset可以包含多个datatable.你绑定的时候只是绑定的dataset中的一个datatable.
      

  4.   


    我没说清楚,是这样的,我本来是直接把我的DataGridView1.DataSource = table;
    但是发现在控制当前选中行的时候无法控制,我就改成DataGridView1绑定到BindingSource,然后BindingSource绑定到table,可是为了绑定到table发现必须创建一个dataset来包含table,比较郁闷。
      

  5.   

    有必要创建bindingsource吗?把datatable添加dataset 哪里要用,就把它的数据源指向dataset不就可以了.
      

  6.   

    感觉还是要把DataSource指向ds.DefaultView
      

  7.   

    写错,是ds.Tables[0].DefaultView
      

  8.   


    数据绑定控件, 即使你给它 DataTable , 它用的也是 DataView(DefaultView)DataTable 本身的数据绑定能力有限, 威力在 DataView 上.
      

  9.   

    可以直接BindingSource source = table;
      

  10.   


    不行 
    提示 无法将类型“System.Data.DataTable”转换为“System.Windows.Forms.BindingSource”
      

  11.   

     不好不通过DataSet而直接把DataTable绑定到数据源。即使绑定,也是DataSet中的一张表。DataSet映射为数据库,DataTable 为数据库中的表。想想没有数据库怎么去取数据库中的表。
      

  12.   

    看来要用BindingSource的话就必须创建一个包含DataTable的DataSet了。
      

  13.   

    解决了,bs = new BindingSource(table,null);