Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 排序时DataGridView崩溃?_C#_Datagridview - Fatal编程技术网

C# 排序时DataGridView崩溃?

C# 排序时DataGridView崩溃?,c#,datagridview,C#,Datagridview,我有一个DataGridView,它有多行,每行代表一个进程。当其中一个进程退出时,通过将my PID列从整数进程id更改为字符串--来更新行以反映这一点。如果所有进程都在运行,并且该列中的每个单元格都是一个数字,那么我可以对PID列进行排序。如果这些过程中的任何一个都已结束,并且甚至有一个单元格包含--,那么当我尝试对该列进行排序时,应用程序将失败。它突出显示了Application.Run(newmyform())Program.cs中的行,带有ArgumentException说明“对象必

我有一个DataGridView,它有多行,每行代表一个进程。当其中一个进程退出时,通过将my PID列从整数进程id更改为字符串
--
来更新行以反映这一点。如果所有进程都在运行,并且该列中的每个单元格都是一个数字,那么我可以对PID列进行排序。如果这些过程中的任何一个都已结束,并且甚至有一个单元格包含
--
,那么当我尝试对该列进行排序时,应用程序将失败。它突出显示了
Application.Run(newmyform())Program.cs中的行,带有
ArgumentException
说明“对象必须为Int32类型”。PID列是一个未绑定的DataGridViewTextBoxColumn,其SortMode是自动的。如何对其进行排序,使其不会崩溃,并将PID值为
--
的所有行分组在一起?我不在乎它们是在排序列表的开头还是结尾。

我自己从来没有这样做过,但我认为您可以使用某种单元格格式化程序。 因此,您可以为退出的进程存储一个值,如
-1
,该值将自动格式化为您想要的任何值,如
--

也许这可以帮助你:


我只是快速阅读,但我想这正是我的意思。

你必须在每列填写相同类型的数据。 当datatable的列有一些字符串和一些null时,它将是空的。 所以 如果数据为空,则必须将其设置为“”。
希望能解释一下。对不起我的英语。

我现在非常困惑和恼火。我把它从
--
改为
-1
,但它仍然给了我一个例外,这次是这样的消息:“对象必须是字符串类型。”FFS…@coreyogurn me也=)也许现在它是一个不同的列?如果所有的
PID
s现在都来自类型
int
,那么它应该可以工作了,不管怎样,我发现当我创建行时,我给了该列一个int,但是当我更新行时,我给了该列一个字符串。现在它可以正确排序,因为所有内容都是int。如果列的某个单元格有空值,它也会崩溃。>当我试图对列(无界表)进行排序时,从一个允许空值的DataTable中提取数据时发生了这种情况!修复是在SQL表和查询中完成的:我用“none”填充空单元格。虽然
CellFormatting
适用于他的特定用途(如PIDs),但在一般情况下,这不是一个很好的解决方案,因为在许多情况下,所有整数值(或双精度)都是有效的,需要排序。或者@ArthurZennig提到的数据库案例,似乎更好的方法是禁用自动排序,自己单击处理列,并提供自定义IComparer(有一个
Sort
重载接受自定义比较器,但不幸的是
DataGridViewColumnSortMode.Automatic
不允许您提供)。您可以发布
流程
对象的代码以及将集合数据绑定到列表的代码吗?它不是我的流程对象,而是
系统.Diagnostics.Process
,如前所述,该列未绑定。