2011-08-18 55 views
1

我有以下代码(DevExpress的分量):问题与分组

dgvDisplayDictionary.DataSource = DataAccessor.GetAllRecords(); 

gvDisplay.BeginSort(); 
gvDisplay.ClearGrouping(); 
gvDisplay.Columns[0].GroupInterval = ColumnGroupInterval.Alphabetical; 
gvDisplay.Columns[0].GroupIndex = 0; 
gvDisplay.EndSort(); 

我收到以下错误:

At least one object must implement IComparable. 

我的类绑定到gvDisplay

public class NormDocCost:AbstractDisplayDictionary. 
    {    
     public virtual Category Category { get; set; }    
     public virtual DocumentFormat DocumentFormat { get; set; }    
     public virtual Translate Translate { get; set; } 
     public virtual int NdcId { get; set; }   
     public virtual int PageStart { get; set; }   
     public virtual int PageEnd { get; set; }   
     public virtual double Cost { get; set; }    
     public virtual DateTime? DateFrom { get; set; }    
     public virtual DateTime? DateTo { get; set; } 
    } 

我有试图写这个代码,但不能正常工作:

public int CompareTo(object other) 
     { 
      var obj = (NormDocCost)other; 
      if(obj.Category.Id == Category.Id) 
      { 
       return this.Category.NameRu.CompareTo(obj.Category.NameRu); 
      } 
      return obj.Category.Id.CompareTo(Category.Id); 
     } 

回答

1

当网格组记录时,首先对它们进行排序,然后根据组列中具有相同值的行创建组。所以,我倾向于认为第一列是绑定到Categbory字段的。它的类型是什么?我认为网格不能比较这个字段的值,因此引发这个异常。

+0

是的,我在类别类中写了CompareTo,现在可以工作。但不是我想要的。无论如何,这是其他问题。 – user348173