use*_*791 6 devexpress datasource entity-framework-5
我有一个devexpress GridControl,我正在设置它的数据源,如下所示:
var regs = (from vcap in context.chaps
select vcap);
gridControl1.DataSource = new BindingList<chaps>(regs.ToList());
Run Code Online (Sandbox Code Playgroud)
但是当我使用网格时,我添加或删除的行不会被保存,只会保存对初始行的更改.
如果我这样做:
gridControl1.DataSource = context.chaps.Local;
Run Code Online (Sandbox Code Playgroud)
我没有得到任何行,AddNewRow甚至没有在视觉上添加新行.
如果我这样做:
gridControl1.DataSource = context.chaps.ToList();
Run Code Online (Sandbox Code Playgroud)
我得到了行,可以保存对它们的更改; 行在视觉上被捕获但不在数据库中,但不能AddNewRow.
如果我这样做:
gridControl1.DataSource = context.chaps;
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().
Run Code Online (Sandbox Code Playgroud)
但context.chaps.Local也没有ToBindingList方法.
我不认为这是devexpress的问题,而是我没有得到如何正确设置数据源.有没有办法获得context.chaps.Local.ToBindingList()相同的?
context.chaps.Local是一个ObservableCollection<T>.但ToBindingList不是一种方法,ObservableCollection<T>而是一种扩展方法DbExtensions:
public static BindingList<T> ToBindingList<T>(
this ObservableCollection<T> source) where T : class;
Run Code Online (Sandbox Code Playgroud)
要使用此方法并使用Intellisense查看它,您需要在您尝试调用的代码文件中包含相应的命名空间ToBindingList():
using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10670 次 |
| 最近记录: |