Как использовать FilterExpression в Radgrid с Linq - PullRequest
0 голосов
/ 31 января 2011

У меня есть Radgrid, и когда я фильтрую, я получаю что-то вроде:

"(iif(Name== null, \"\",  Name).ToString().ToUpper().Contains(\"ap\".ToUpper()))"

В своем событии Выбор источника данных Linq я хотел бы использовать этот фильтр в своих результатах, выполнив что-то вроде results = results.Where (FilterExression), но это не работает.

Ответы [ 3 ]

2 голосов
/ 16 апреля 2012

Вот что я использовал:

var filterExpression = gridOrderLineItems.MasterTableView.FilterExpression;
if (!string.IsNullOrEmpty(filterExpression))
   allItems = allItems.AsQueryable()
              .Where(filterExpression)
              .ToList();

Как видно из документации Telerik, в RadGrid есть два режима фильтрации.Одним из них является Lynq Dynamic, а другим - SQL-подобный.Я думаю, что по умолчанию динамический, при условии, что ваш источник данных поддерживает его.У меня был один случай, когда сетка использовала синтаксис SQL, потому что источником данных был IEnumerable, и мне пришлось изменить его на List, чтобы включить динамическое выражение.Вы можете увидеть, в каком режиме находится сетка, просто проверив свойство FilterExpression.Также есть свойство EnableLinqExpressions, с которым вы можете играть.

0 голосов
/ 19 января 2017

Мое решение

var z = RadGrid2.MasterTableView.FilterExpression;
            string filter = "";
            if (z.Split('\"').Length > 3)
            {
                string v = "'" + z.Split('\"')[3] + "'";
                string c = z.Split('\"')[0];
                string opr = " like ";
                c = c.Replace("(iif(", "").Replace(" ", "").Replace("==", "").Replace("null", "").Replace(",", "");

                filter = c + opr + v ;
            }
            else
                filter = z;


            e.InputParameters["filterExpression"] = filter;
0 голосов
/ 13 декабря 2011

Я думаю, вам нужно что-то вроде результатов. Где (i => (i.Name + ""). ToString (). ToUpper (). Contains ("ap" .ToUpper ())))

...