我有一个 Infragistics UltraWinGrid,我正在使用它的内置列选择器。
但是,如果用户在特定列上有过滤器,然后隐藏该列,则过滤器仍会应用于数据。
我希望如果该列被隐藏,那么它的过滤器应该不再适用,或者我至少应该能够以某种方式设置它。
我已经看过并且找不到这样做的方法。有任何想法吗?
我有一个 Infragistics UltraWinGrid,我正在使用它的内置列选择器。
但是,如果用户在特定列上有过滤器,然后隐藏该列,则过滤器仍会应用于数据。
我希望如果该列被隐藏,那么它的过滤器应该不再适用,或者我至少应该能够以某种方式设置它。
我已经看过并且找不到这样做的方法。有任何想法吗?
隐藏列时,将UltraWinGrid.AfterColPosChanged
触发该事件。事件参数不会告诉您哪个列的位置已更改(即hidden),因此最简单的方法是遍历列并清除任何隐藏列的过滤器。
private void grid_AfterColPosChanged(object sender, AfterColPosChangedEventArgs e)
{
foreach (UltraGridBand band in grid.DisplayLayout.Bands)
{
foreach (ColumnFilter filter in band.ColumnFilters)
{
if (filter.Column.Hidden)
{
filter.ClearFilterConditions();
}
}
}
{
笨重,但它的工作原理。
处理列隐藏;只需绑定Column.Hidden
到您的对象并做您需要做的任何事情。