BlaEntities TestContext = new BlaEntities();
IQueryable<TestEntity> Entities = TestContext.TestEntity;
TestDataGridView.DataSource = Entities;
Когда я назначаю сущности непосредственно источнику данных TestDataGridView;Мне не нужно ничего делать, чтобы отразить мои изменения в сетке.
TestEntity entity = Entities.First();
entity.Title = "What up!?";
Этого более чем достаточно, чтобы увидеть изменения в TestDataGridView.Единственное исключение, с которым я столкнулся, заключалось в том, что, если я добавлю еще одну строку в TestContext, используя TestContext.AddToTestEntity(...)
, он не будет отображаться в сетке (в отличие от удаления), но я получу его с помощью метода Add BindingSource.
BindingSource source = new BindingSource{DataSource = Entities};
TestDataGridView.DataSource = source;
source.Add(CreateNewTestEntity());
Теперь единственное препятствие, которое осталось на моем пути, заключается в следующем: если я использую фильтрацию - например, TestContext.Where(t => t.Active)
- использую его в качестве источника данных для своей сетки, затем меняю свойство Active первой записи на false, как мне обновить / перезагрузитьсетка, чтобы отразить это, не создавая другой экземпляр BlaEntities?
IQueryable<TestEntity> FilteredEntities =
TestContext.TestEntity.Where(t => t.Active);
TestDataGridView.DataSource = FilteredEntities;
TestEntity temp = FilteredEntities.First();
temp.Active = false;
Я вижу, что он больше не активен в сетке, но, поскольку сетка должна показывать только активные записи, как я могу удалить ее из сетки, не удаляяэто из источника?
- Когда я перебираю
FilteredEntities
, я вижу, что temp
больше нет, но я все еще могу видеть и редактировать его в сетке.Так что мне нужно, чтобы что-то заставило grid итерировать свой DataSource (который является FilteredEntities) и снова заполнить себя - Я пытался вызвать
TestContext
метод Refresh
и методы сброса BindingSource
. - Я попытался изменить
TestDataGrid.DataSource
на null
, затем изменить его обратно на FilteredEntities
в надежде на повторное заполнение строк, тоже не сработало. - Это работает, если я сохранюмои изменения с использованием
TestContext.SaveChanges()
и использование другого экземпляра BlaEntities
, например TestDataGridView.DataSource = new BlaEntities().TestEntity.Where(t => t.Active)
, но мне нужно использовать мой текущий экземпляр.
Итак, вопрос в том, как я могу заставить TestGridView перезагрузить егосодержимое с использованием FilteredEntities.Любой совет будет принята с благодарностью.Спасибо.