Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2013, 18:28   #1
Prigur
Новичок
Джуниор
 
Регистрация: 06.10.2013
Сообщений: 2
По умолчанию Лишнее срабатывание ColumnChanged при переходе по строкам в DataTable

Есть на форме элемент DevExpress.XtraTreeList.TreeList (или System.Windows.Forms.DataGridView).
Заполняем таблицу тестовыми данными:
Код:
	    DataTable TableTree = new DataTable();
            TableTree.Columns.Add("ID", typeof (int));
            TableTree.Columns.Add("Name", typeof(string));
            TableTree.Columns.Add("ParentID", typeof(int));
            TableTree.Columns.Add("Value", typeof(string));
            TableTree.PrimaryKey = new DataColumn[]{TableTree.Columns[0]};

            DataRow row_ = TableTree.NewRow();
            row_.BeginEdit();
            row_["ID"] = 0;
            row_["ParentID"] = DBNull.Value;
            row_["Name"] = "Ветвь 1";
            row_["Value"] = "";
            row_.EndEdit();
            TableTree.Rows.Add(row_);

            row_ = TableTree.NewRow();
            row_.BeginEdit();
            row_["ID"] = 1;
            row_["ParentID"] = 0;
            row_["Name"] = "Ветвь 2";
            row_["Value"] = "";
            row_.EndEdit();
            TableTree.Rows.Add(row_);

            row_ = TableTree.NewRow();
            row_.BeginEdit();
            row_["ID"] = 2;
            row_["ParentID"] = DBNull.Value;
            row_["Name"] = "Ветвь 3";
            row_["Value"] = "";
            row_.EndEdit();
            TableTree.Rows.Add(row_);
Связываем элемент с таблицей и делаем начальные установки:
- в случае TreeList:
Код:
            treeListTest.RootValue = DBNull.Value;
            treeListTest.DataSource = TableTree;
            treeListTest.ExpandAll();
- в случае DataGridView:
Код:
dataGridView1.DataSource = TableTree;
Связываем поле какого-нибудь текстового элемента на форме со столбцом "Value" таблицы:
Код:
textBox1.DataBindings.Add("Text", TableTree, "Value", true, DataSourceUpdateMode.OnPropertyChanged);
Устанавливаем обрабочики для таблицы:
Код:
            TableTree.ColumnChanged += new DataColumnChangeEventHandler(HandleColumnChangeEventTableTreeData);
            BindingContext[TableTree].PositionChanged += new EventHandler(TableTree_PositionChanged);

void HandleColumnChangeEventTableTreeData(object sender, DataColumnChangeEventArgs e)
{
}

void TableTree_PositionChanged(object sender, EventArgs e)
{
}
Запускаем, в элементе DataGridView или TreeList встаём, например, на вторую строку, и изменяем значение в текстовом поле, в результате срабатывает ColumnChanged и попадаем в HandleColumnChangeEventTableTreeDat a, - всё правильно.
Но если теперь просто переместимся на третью строку, то почему-то опять срабатывает ColumnChanged (вновь попадаем в HandleColumnChangeEventTableTreeDat a), и лишь только потом в TableTree_PositionChanged (срабатывает PositionChanged).
Чем вызвано повторное лишнее срабатывание ColumnChanged при переходе на другую строку, и как от этого избавиться?

Последний раз редактировалось Stilet; 06.10.2013 в 20:21.
Prigur вне форума Ответить с цитированием
Старый 07.10.2013, 06:33   #2
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Выложите весь тестовый проект.
Посмотреть можно, а вот писать все заново или эмулировать в голове - лень.
simples вне форума Ответить с цитированием
Старый 07.10.2013, 15:16   #3
Prigur
Новичок
Джуниор
 
Регистрация: 06.10.2013
Сообщений: 2
По умолчанию

Загрузил...
Вложения
Тип файла: rar WindowsFormsApplicationTest.rar (31.5 Кб, 8 просмотров)
Prigur вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертирование данных при добавлении DataTable fedakdenis C# (си шарп) 6 21.11.2012 06:42
Предупреждение при переходе на сайт. countess Общие вопросы .NET 1 18.10.2011 13:54
Ошибка при переходе по ссылке Anubys PHP 2 05.07.2011 06:55
Не срабатывание русской кодировки при вводе символов с клавиатуры Syltan Общие вопросы C/C++ 5 24.05.2010 19:16
Refresh при переходе на страницу nikleb JavaScript, Ajax 8 20.12.2007 18:24