我正在为Janus.GridEx
制作手动过滤解决方案。
gridEX1.FilterMode = FilterMode.Manual;
我们需要在每次过滤器更改时查询我们的数据库,并且每次用户在过滤器行中输入内容时我们都需要这样做,所以我们有:
gridEX1.FilterRowUpdateMode=FilterRowUpdateMode.WhenValueChanges;
为了实现手动过滤,我已经处理了ApplyFiltering
这样的事件:
gridEX1.ApplyingFilter += (sender, e) =>
{
if (gridEX1.RootTable.Columns[gridEX1.Col].Key != "CustomerName") return;
var customerName = gridEX1.GetValue(gridEX1.Col);
gridEX1.SuspendBinding();
bindingSource1.DataSource= string.IsNullOrWhiteSpace(customerName.ToString()) ? _customers : _customers.Where(c => c.CustomerName.Contains(customerName.ToString())).ToList();
gridEX1.ResumeBinding();
};
正如您所看到的,我正在使用GetValue
方法,因为当我们将更新模式设置为WhenValueChanges
时,不会填充过滤行。
这里的问题是:由于RowFilter
未更新,因此当数据源更改时,网格会加载其上一行筛选器,而后者将清除用户已键入的字符。
如何强制GridEx
以FilterRow
模式填充WhenValueChanges
?