Патч для исправления ошибки NullReferenceException при ошибке синхронизации
От: Дьяченко Александр Россия  
Дата: 19.11.13 15:46
Оценка: 6 (1)
Ошибка:
Ссылка на объект не указывает на экземпляр объекта.
Автор: Дьяченко Александр
Дата: 27.06.13


Описание проблемы:
Т.к. у _errorsGrid (DataGridView) свойство AutoGenerateColumns = true, то при задании свойства DataSource происходит обновление списка колонок в процессе которого порядок ранее созданных колонок почему-то меняется и условие в обработчике события CellFormating ловит не ту колонку:
private void _errorsGrid_CellFormatting(
    object sender,
    DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0) // Например у меня колонка содержащая SyncErrorType идет с индексом 1
        switch ((SyncErrorType)e.Value)
        {
            case SyncErrorType.Warning:
                e.Value = _warningIcon;
                break;
            case SyncErrorType.CriticalError:
                e.Value = _errorIcon;
                break;
            default:
                e.Value = null;
                break;
        }
}

Описываю подробно может еще кому пригодится.

Патч:
diff -r 4aea210eed02 Janus/Core/Synchronization/UI/SyncForm.cs
--- a/Janus/Core/Synchronization/UI/SyncForm.cs    Sat Oct 26 22:36:34 2013 +0400
+++ b/Janus/Core/Synchronization/UI/SyncForm.cs    Tue Nov 19 23:31:54 2013 +0800
@@ -108,6 +108,7 @@
             _syncTaskList.SmallImageList = _taskStateImages;
             _pinCheck.Checked = Config.Instance.SyncWindowPinned;
             _splitContainer.Panel2Collapsed = true;
+            _errorsGrid.AutoGenerateColumns = false;
             _errorsGrid.DataSource = _errors;
             Height = _normalHeight;
         }


У кого есть права на запись примените патч пожалуста.
... << RSDN@Home 1.2.0 alpha 5 rev. 75>>
Re: Патч для исправления ошибки NullReferenceException при ошибке синхронизации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.13 17:24
Оценка:
Здравствуйте, Дьяченко Александр, Вы писали:

ДА>У кого есть права на запись примените патч пожалуста.


Можно без всяких прав отправить мне pull request
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.