2013-05-29 18 views
1

У меня есть DataGridView с несколькими строками, каждая из которых представляет один процесс. Когда один из этих процессов завершается, строка обновляется, чтобы отразить это, изменив мой столбец PID с идентификатора целочисленного процесса на строку --. Если все процессы запущены, и каждая ячейка в этом столбце является числом, я могу сортировать столбец PID. Если какой-либо из этих процессов закончился, и даже одна ячейка содержит --, то при попытке сортировки в этом столбце приложение не работает. Он выделяет строку Application.Run(new MyForm()); в Program.cs с номером ArgumentException: «Объект должен иметь тип Int32». Столбец PID является несвязанным, DataGridViewTextBoxColumn, который SortMode является автоматическим. Как я могу сортировать его так, чтобы он не разбился, и все строки, имеющие значение PID --, сгруппированы вместе? Меня не волнует, находятся ли они в начале или конце отсортированного списка.Ошибка DataGridView при сортировке?

+0

Можете ли вы оставить код для объекта 'Process' и кода для привязки коллекции к списку? – mclark1129

+0

Это не мой объект Process, это 'System.Diagnostics.Process', и как указано, столбец Unbound. –

ответ

1

Я никогда не делал этого сам, но я думаю, вы можете использовать какой-то сотовый форматирующий. Таким образом, вы можете хранить значение как -1 для возбужденном процесса, и это значение будет автоматически отформатирован в то, что вы хотите, как --

Может быть, это может помочь вам: DataGridView.CellFormatting

Я только делаю quickread но я Думаю, это именно то, что я имею в виду.

+0

Я сейчас очень смущен и раздражен. Я изменил его с '-' на '-1', и он все еще дает мне исключение, на этот раз с этим сообщением:« Объект должен иметь тип String ». FFS ... –

+0

@CoreyOgburn me too =) может быть, теперь его другая колонка? если все 'PID' теперь имеют тип 'int', то он должен работать – Viper

+0

Хорошо, я никогда не думал, что когда я создал строку, я дал этому столбцу int, но когда я обновил строку, я дал этому столбцу строку. Теперь он сортируется правильно, потому что все является int. –

0

Вы должны заполнять одинаковые данные в каждом столбце. Если в столбце datatable есть строка, а значение null - это будет. so; Если ваши данные являются нулевыми, вы должны это указать "". Надеюсь объяснить это. Извините за мой английский.

Смежные вопросы