2017-10-19 231 views
1

所以我有一個TelerikUigrid和即時嘗試使用serverside過濾,我有一個非常奇怪的問題。無法循環過濾器描述符正確TelerikUi

所以,當我篩選1網格的一個單一的一切按預期工作,但當我同時過濾2列或更多的列時,我遇到它不起作用。

問題發生的原因是我的2個過濾列都保存在一個單獨的對象,這是不可循環的,所以在下面的例子中,如果我過濾2列過濾器將有2的計數,但不是可循環的,所以我不能「拆分」對象。

因此,當過濾器中有一個對象時它工作正常,因爲只有1個可供選擇,但是當有2個或更多Visual Studio不知道應該選擇哪一個時,我的變量會重新發送空值。

if (request.filter != null && request.filter.Any()) 
{ 
    foreach(var filter in request.filter) 
    { 
     var filterDescriptor = filter as FilterDescriptor; 
     if (filterDescriptor.Value != null) 
     { 
     //Code 

     } 
} 

回答

1

如果你有兩個過濾器,然後在過濾器就會出現,稱爲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 
    } 
} 
+0

它的工作! ty非常。但我不得不改變if((outerCompositeFilter.FilterDescriptors [j]是FilterDescriptor)== false) { //用這個過濾器做些什麼 } 爲true而不是false來讓它工作 –