Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / определение что изменилось в коллекции / 6 сообщений из 6, страница 1 из 1
06.08.2013, 12:49
    #38356447
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
Имеем коллекцию ObservColl<T>, биндинг на DataGrid. Задача достаточно простая - понять (поставить флаг item-у) что его содержимое изменилось. Причем Изменилось именно значение, отличное от первоначального. Неужели 2 копии коллекции хранить?:(
...
Рейтинг: 0 / 0
06.08.2013, 12:58
    #38356463
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
можно так:

class ClassItem
{
string _property;
public string Property
{
get{return _property;}
set
{
if(_property != value)
{
_property = value;
ObjectChanged = true;
}
}
}

public bool ObjectChanged {get; set;}
}
...
Рейтинг: 0 / 0
06.08.2013, 14:41
    #38356684
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
EDUARD SAPOTSKIможно так:

class ClassItem
{
string _property;
public string Property
{
get{return _property;}
set
{
if(_property != value)
{
_property = value;
ObjectChanged = true;
}
}
}

public bool ObjectChanged {get; set;}
}
увы это не подойдет. Пример: было значение ИД =1. Поменяли на 2 - "изменилось - да", поменяли на 1 - изменилось опять "да".
...
Рейтинг: 0 / 0
06.08.2013, 14:57
    #38356729
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
netivanувы это не подойдет. Пример: было значение ИД =1. Поменяли на 2 - "изменилось - да", поменяли на 1 - изменилось опять "да".
Можно поинтересоваться, на кой ваще это нужно? ID пусть СУБД задает, для юзера - ридонли. А остальное... ну обновишь запись в базе лишний раз, ну и фиг с ней... Или я чето не понимаю...
...
Рейтинг: 0 / 0
06.08.2013, 15:13
    #38356764
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
netivan,

DataGrid должен понимать IEditableObject, т.е., если к варианту EDUARD SAPOTSKI добавить поддержку этого интерфейса, типа
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        public void BeginEdit()
        {
            backupProperties = new Dictionary<PropertyInfo, object>();
            IEnumerable<PropertyInfo> propertyInfos = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .Where(p => p.CanRead && p.CanWrite && p.GetSetMethod() != null);
            foreach (PropertyInfo property in propertyInfos)
                this.backupProperties[property] = property.GetValue(this, null);
        }
        public void CancelEdit()
        {
            if (backupProperties != null) {
                foreach (var pair in backupProperties)
                    pair.Key.SetValue(this, pair.Value, null);
                this.validationEnabled = validationEnabledValue;
                backupProperties.Clear();
                backupProperties = null;
            }
        }
...


то в сеттере можна будет сравнивать соотв. значение backupProperty
как вариант...
...
Рейтинг: 0 / 0
06.08.2013, 15:52
    #38356865
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение что изменилось в коллекции
EDUARD SAPOTSKI,

такой вариант всегда имеется.

LR ,

спасибо, это интересно :) посмотрю в эту сторону!
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / определение что изменилось в коллекции / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]