我有一个用户控件,其中网格使用 ObjectDataSource 获取数据。网格中的所有列都是可排序的。如果用户单击特定列名,则列表将根据该列进行排序 (List.Sort(sortColumn))。
当其中一列在其字段中具有空白/空值时,我面临一个问题。当 strA/strB 为空或两者都为空时,比较行 strA.CompareTo(strB) 失败并显示“对象引用未设置为对象的实例”。
但是,我为 strA 和 strB 包含了 !string.IsNullOrEmpty() 以避免空引用异常。它仍然没有对网格进行排序。
代码片段如下所示。
int IComparer<MyWorklistItem>.Compare(MyWorkItem x, MyWorkItem y)
{
int sortValue = 1;
if (this.strSortField.Length == 0)
{
return 0;
}
MyWorkItem item1 = this.blnSortDesc ? y : x;
MyWorkItem item2 = this.blnSortDesc ? x : y;
PropertyInfo property1 = item1.GetType().GetProperty(this.strSortField);
PropertyInfo property2 = item2.GetType().GetProperty(this.strSortField);
string strA = (string)property1.GetValue(item1, null);
string strB = (string)property2.GetValue(item2, null);
if (!string.IsNullOrEmpty(strA) && !string.IsNullOrEmpty(strB))
{
sortValue = strA.CompareTo(strB);
}
return sortValue;
}
当其中一个值或两者都为空时,如何排序。
注意:我使用的是 VS 2005,因此无法使用 LINQ。
请建议。
谢谢,斯里拉姆