【问题标题】:SubSonic 3. Get results as DataTableSubSonic 3. 以 DataTable 形式获取结果
【发布时间】:2010-01-25 09:06:06
【问题描述】:

如何将 .All() 方法的结果作为 DataTable 获得?

目前它返回 IQueryable,它不能用作 WinForms DataGridView 控件的数据源。

dataGridView1.DataSource = Product.All(); // not working

【问题讨论】:

    标签: subsonic subsonic3


    【解决方案1】:

    您可以将 List 绑定到 DataGridView 控件,因此只需在 IQueryable 上使用 ToList() 方法,例如

    MyDataGridView.DataSource = MyObject.All().ToList();
    

    【讨论】:

      【解决方案2】:

      除非您的 Product 类实现以下之一:IList、IListSource、IBindingList、IBindingListView;您将无法将结果绑定到您的 DataGridView。

      【讨论】:

        【解决方案3】:

        对于双向绑定,您可以使用BindingList

        dataGridView1.DataSource = new BindingList<Product>(Product.All().ToList());
        

        当您从 DataGridView 添加/删除行时,BindingList 将自动更新,而当您将项目添加到绑定列表时,DataGridView 将自动更新。

        如果要在修改Product时自动更新DataGridView,Product必须实现INotifyPropertyChaged

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-19
          • 2017-05-20
          • 2019-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-29
          • 1970-01-01
          相关资源
          最近更新 更多