2013-05-29 70 views
1

我有一個DataGridView多行代表一個進程。當其中一個進程退出時,通過將我的PID列從整數進程ID更改爲字符串--來更新此行以反映此問題。如果所有進程都在運行,並且該列中的每個單元都是一個數字,我可以對PID列進行排序。如果任何這些進程已結束,甚至一個單元格包含--,那麼當我嘗試對該列進行排序時,應用程序將失敗。它突出顯示Program.cs中的Application.Run(new MyForm());行,其中ArgumentException表示「對象必須是Int32類型」。 PID列是一個未綁定的DataGridViewTextBoxColumn,它的SortMode是Automatic。我如何進行排序,以便它不會崩潰,並且具有PID值爲--的所有行都被分組在一起?我不在乎他們是否在排序列表的開頭或結尾。排序時DataGridView崩潰?

+0

您可以發佈您的'Process'對象的代碼以及將數據綁定到列表的代碼? – mclark1129

+0

它不是我的Process對象,它是'System.Diagnostics.Process',並且如前所述列是Unbound。 –

回答

1

我從來沒有做過,但我認爲你可以使用某種格式化器。 所以你能夠存儲像-1一個值的退出過程,這個值會自動格式化成任何你想要像--

也許這可以幫助你:DataGridView.CellFormatting

我只是做了quickread但我認爲那就是我的意思。

+0

我現在非常困惑和惱火。我將它從'--'改爲'-1',它仍然給我一個例外,這次用這個消息:「對象必須是String類型。」 FFS ... –

+0

@CoreyOgburn我也= =也許現在它是一個不同的列?如果所有'PID'現在都來自'int'類型,那麼它應該可以工作 – Viper

+0

好吧,從來沒有想過,我發現當我創建行時,我給該列添加了一個int,但是當我更新行時,我給了該列一個字符串。現在它排序正確,因爲一切都是int。 –

0

您必須在每一列中填寫相同類型的數據。 當你的數據表的列有一些字符串和一些空它會。 等等; 如果您的數據爲空您必須使用「」。 希望解釋一下。對不起我的英語不好。