我正在使用Telerik的PostSharp和RadGridView。有些列使用DataTypeConverter自定义数据,我用它来加载Name
类型AdvisableDictionary<Tkey, TValue>
的属性中的值。
网格有过滤按钮,点击后会显示一个带有类似Excel的过滤选项的弹出窗口。
但是,当我单击此按钮时,出现错误Failed to compare two elements in the array.
这种情况仅适用于具有此类数据的列。我对PostSharp没有多少经验,但我认为这是由PostSharp生成的。
以下是来自PostSharp的Output窗口的最后一行,在它抛出异常之前:
The thread 0x3964 has exited with code 0 (0x0).
The thread 0x364 has exited with code 0 (0x0).
Step into: Stepping over non-user code 'TranslatableObject.get_Name'
Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding1.GetValue'
Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding1.get_LocationInfo'
Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding.GetValue'
我该怎么做才能解决此错误?
答案 0 :(得分:0)
您可以创建一个类来继承AdvisableDictionary并实现IComparable。
public class AdvisableDictionary: IComparable
{
//here add the code from your heart
}
因此,在FilterPopup的FilterConfirmed事件中,您需要更正过滤器描述符的值。
那就是它。
以下是prj示例。请看一下。享受c#编程的乐趣。
这是我的解决方案,需要尝试,成为老板,努力,快乐:)
答案 1 :(得分:-1)
我找到了一个解决方案:AdvisableDctionary
没有实现用于对项目列表进行排序的IComparable。
我创建了一个类来继承AdvisableDictionary
并实现IComparable
并在过滤器弹出窗口的FilterConfirmed
事件中。
我更正了过滤器描述符的值。