所以我有一个 TelerikUigrid,我尝试使用服务器端过滤,但遇到了一个非常奇怪的问题。
因此,当我过滤网格的 1 个单列时,一切都会按预期工作,但是当我同时过滤 2 个或更多列时,我会遇到它不起作用。
出现问题的原因是我的 2 个过滤列都保存在一个不可循环的对象中,因此在下面的示例中,如果我过滤 2 列,过滤器的计数将为 2 但不可循环,所以我不能“分割”对象。
因此,当过滤器中只有一个对象时,它可以正常工作,因为只有 1 个对象可供选择,但当有 2 个或更多对象时,Visual Studio 不知道应该选择哪一个,因此我的变量会重新发送 null。
if (request.filter != null && request.filter.Any())
{
foreach(var filter in request.filter)
{
var filterDescriptor = filter as FilterDescriptor;
if (filterDescriptor.Value != null)
{
//Code
}
}
最佳答案
如果您有两个过滤器,则过滤器作为名为 CompositeFilterDescriptor
的对象出现。
你需要这样的东西:
for (var i = 0; i < filters.Count; i++)
{
if (filters[i] is CompositeFilterDescriptor)
{
var outerCompositeFilter = (CompositeFilterDescriptor)filters[i];
for (var j = 0; j < outerCompositeFilter.FilterDescriptors.Count; j++)
{
if (outerCompositeFilter.FilterDescriptors[j] is FilterDescriptor)
{
// Do something with this filter
}
}
}
if (filters[i] is FilterDescriptor)
{
// Only 1 filter - do something with it
}
}
关于asp.net - 无法正确循环过滤器描述符 Telerik Ui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825279/