我正在为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
?