【发布时间】:2011-02-12 04:44:12
【问题描述】:
在 Excel 中,有一个用于过滤列单元格的功能。
如何在 Silverlight Datagrid 中实现类似过滤功能的 excel?
请指教。谢谢
AJ
【问题讨论】:
标签: silverlight datagrid filter
在 Excel 中,有一个用于过滤列单元格的功能。
如何在 Silverlight Datagrid 中实现类似过滤功能的 excel?
请指教。谢谢
AJ
【问题讨论】:
标签: silverlight datagrid filter
好问题 - 这是一个很好的功能,但不是 5 分钟就能实现的。
您不希望以任何方式覆盖标准数据网格的呈现(工作量太大),因此您需要采取稍微不同的方法。一种方法是在网格顶部绘制您自己的“标题” - 只需一个带有边框和堆栈面板的网格即可开始。然后您需要枚举网格的可见列,并创建一个对应于每个列的下拉列表,并将该下拉列表添加到堆栈面板。使用简单的 linq 语句,您可以获得每列中不同值的列表。当用户从下拉列表中选择一个值时,您可以在 LINQ 语句中使用该值过滤网格的数据源。
实际上,这可能至少需要一周的时间才能正确完成。如果您将开发成本和测试成本与已经内置过滤的优质组件套件的成本(大多数主要供应商都这样做)进行衡量,那么除非您正在为一个非常小时费率低,您会发现购买组件更便宜 - 它可能也更安全,因为组件将经过良好测试并且真正没有错误。
编辑 (稍后):我还应该提到的是,如果您只想在几列上执行此操作,那么您可以考虑使用列标题模板。如果你采用这种方法,你还必须做一些事情,比如复制可能是原始列标题一部分的各种鼠标相关的动画或过渡,这样你就可以在网格的顶部保持一些一致性。就我个人而言,我只会选择选项一,让用户能够过滤任何列。
【讨论】: