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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связывание данных List<T> c DataGridView, Связывание данных List<T> c DataGridView 
:(
    Опции темы
[email protected]
Дата 26.5.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте у меня такой вопрос я создал класс
Код

public class Point
    {
        private int _x;
        private int _y;
        public Point()
        { }
        public Point(int x1, int y1)
        {
            x = x1;
            y = y1;
        }
        public int x
        {
            get { return _x; }
            set { _x = value; }
        }
        public int y
        {
            get { return _y; }
            set { _y = value; }
        }
    }


далее создал список на основе этого класса
Код

     List<Point> pList = new List<Point>();

и связал с компонентом DataGridView 
Код

void InitListPoint()
        {
            Point p;
            for (int i = 1; i <= 10; i++)
            {
                p = new Point();
                p.x = i;
                p.y = i * i;
                pList.Add(p);
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            InitListPoint();
            dataGridView1.DataSource = pList;
        }

Данные отображаются нормально.
Но вот такая проблема если данные в списке изменяются
то эти изменения не отображаются в DataGridView
Как сделать так что изменения отображались.
Например после нажатия на кнопку
Код

private void button1_Click(object sender, EventArgs e)
        {
            pList[0].x = 100;
            pList[1].y = 100;
            dataGridView1.Update();
        }

PM MAIL   Вверх
Partizan
Дата 26.5.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



[email protected], возможно реализация классом Point интерфейса INotifyPropertyChanged поможет...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Raistlin
Дата 26.5.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дополнительно к тому, что посоветовал Partizan: (когда с INotifyPropertyChanged разберетесь)
Можно посмотреть в сторону DataBinding и реализовывать такую цепочку:
List<> - BindingList<> - BindingSource - DataGridView
PM MAIL   Вверх
Лен
Дата 28.5.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно каждый раз на изменение свойств конкретного объекта / содержимого списка Refresh-ить грид или вызывать ResetBindings(false) у bindingSourc-а, связанного с ним. При работе с List<> в качестве DataSource напрягать по скорости не должно.
PM MAIL   Вверх
[email protected]
Дата 28.5.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно пример кода пожалуйста
PM MAIL   Вверх
Лен
Дата 28.5.2009, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну, хотя бы уже и так... )))
Код

private void button1_Click(object sender, EventArgs e)
{
  pList[0].x = 100;
  pList[1].y = 100;
  pointBindingSource.ResetBindings(false);
}

PM MAIL   Вверх
[email protected]
Дата 28.5.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ясно поробуем
PM MAIL   Вверх
Raistlin
Дата 28.5.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Лен @  28.5.2009,  12:10 Найти цитируемый пост)

pList[0].x = 100;  
pList[1].y = 100;  

Тогда уж брать список из pointBindingSource.DataSource и работать с ним, а не хранить где-то отдельно.

PM MAIL   Вверх
Alex23
Дата 23.4.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, Лен! Была аналогичная проблема и решилась с помощью ResetBindings(false).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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