Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение данных из DataGrid, Помогите с сохранением данных 
:(
    Опции темы
barney72
Дата 14.6.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.2.2010

Репутация: нет
Всего: нет



Всем привет! Я пишу небольшое приложение с использованием DataGrid.  Есть класс GmarketObject. В нем я реализовал интерфейсы IEditableObject и INotifyPropertyChanged. Для этого класса создал коллекцию ObservableCollection<GmarketObject>. Ниже сам класс и класс коллекции.
Код

public class GmarketObject : IEditableObject, INotifyPropertyChanged
    {
       private int id;
       private string name;
        private string who;
        private Uri link;
        private double costWon;
        private double costRu;

        //Номер
       public int ID
        {
            get { return id; }
            set 
            {
                if (id == value) return;
                id = value;
                OnPropertyChanged("ID");
            } 
       
       }

        //Название заказа
       public string Name
       {
           get { return name; }

           set
           {
               if (name == value) return;
               name = value;
               OnPropertyChanged("Name");
           }
       }

        //Кто заказал
       public string Who
       {
           get { return who; }
           set
           {
               if (who == value) return;
               who = value;
               OnPropertyChanged("who");
           }
       }

        //Ссылка на страницу с вещью
       public Uri Link
       {
           get { return link; }
           set 
           {
               if (link == value) return;
               link = value;
               OnPropertyChanged("Link");
           } 
       }

        //Стоимость Южнокорейских вон
       public double CostWon
       {
           get { return costWon; }
           set 
           {
               if (costWon == value) return;
               costWon = value;
               OnPropertyChanged("CostWon");
           }
       }

        // Стоимость рублей
       public double CostRu
       {
           get { return costRu; }
           set
           {
           if (costRu == value) return;
               costRu = value;
               OnPropertyChanged("CostRu");
           }

       }

       #region INotifyPropertyChanged

       public event PropertyChangedEventHandler PropertyChanged;

       private void OnPropertyChanged(string propertyName)
       {
           if (PropertyChanged != null)
           {
               PropertyChanged(this,
                   new PropertyChangedEventArgs(propertyName));
           }
       }

       #endregion

       #region IEditableObject

       private GmarketObject backupCopy;
       private bool inEdit;

       public void BeginEdit()
       {
           if (inEdit) return;
           inEdit = true;
           backupCopy = this.MemberwiseClone() as GmarketObject;
       }

       public void CancelEdit()
       {
           if (!inEdit) return;
           inEdit = false;
           this.Name = backupCopy.Name;
           this.ID = backupCopy.ID;
           this.Who = backupCopy.Who;
           this.Link = backupCopy.Link;
           this.CostWon = backupCopy.CostWon;
           this.CostRu = backupCopy.CostRu;
       }

       public void EndEdit()
       {
           if (!inEdit) return;
           inEdit = false;
           backupCopy = null;
       }

       #endregion

    }


Код

public class GmarketData : ObservableCollection<GmarketObject>
    {
        public GmarketData()
        {

        }

    }


Разметка Xaml для ДатаГрида:
Код
    
<---Ресурсы грида-->
<Grid.Resources>
            <local:GmarketData x:Key="gmarketData"/>
        </Grid.Resources>
<DataGrid AutoGenerateColumns="False" ItemsSource="{StaticResource gmarketData}" Height="293" HorizontalAlignment="Left" Margin="33,48,0,0" Name="GmarketGrid" VerticalAlignment="Top" Width="389">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding ID}" Header="ID" />
                <DataGridTextColumn Header="Название" Binding="{Binding Name}" />
                <DataGridTextColumn Header="Кто заказал" Binding="{Binding Who}" />
                <DataGridTextColumn Header="Ссылка" Binding="{Binding Link}" />
                <DataGridTextColumn Header="Цена Won" Binding="{Binding CostWon}" />
                <DataGridTextColumn Header="Цена Руб." Binding="{Binding CostRu}" />
            </DataGrid.Columns>
        </DataGrid>


Изначально данные ни откуда не загружаются, вводятся с клавы в грид. Мне нужно сохранить все данные из датагрида в ObservableCollection для последующей сериализации. Хочу сделать сохранение, чтобы потом можно было при последующих запусках просто десериализовать коллекцию и добавлять данные в грид, а затем и в коллекцию. Везде есть описание только как загружать данные в датагрид из ObservableCollection. Я пробовал Считывать DataGrid.Items и приводить каждый элемент к своему типу и добавлять его в коллекцию, но выскакивает исключение:
Unable to cast object of type 'MS.Internal.NamedObject' to type 'Validation.Course'.
Подскажите, может кто знает как все-таки добавить данные в коллекцию.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.