1

우리는 페이징/정렬/필터링 기능이 내장 된 타사 그리드 (telerik 검도)로 작업하고 있습니다. GET 호출을 할 때 특정 방식으로 요청을 보내고 이러한 요청을 AutoQuery 친숙한 요청으로 변환 할 수있는 방법이 있는지 확인하십시오.Transform Request to Autquery friendly

sort[{0}][field] and sort[{0}][dir] 

필터링 :

filter[filters][0][field] 
filter[filters][0][operator] 
filter[filters][0][value] 

는 t을 필요 : 쿼리 문자열로 채워집니다 그래서

filter[filters][{0}][field] 
filter[filters][{0}][operator] 
filter[filters][{0}][value] 

쿼리 문자열

정렬 패턴을 PARAMS 번역 될 것.

FieldName=1 //  filter[filters][0][field]+filter[filters][0][operator]+filter[filters][0][value] in a nutshell (not exactly true) 

필자는 플러그인에서 쿼리 문자열 개체를 조작하여 필터를 제거하거나 (필요한 경우 추가해야합니까?) 여기에 더 좋은 옵션이 있습니까?

나는 검도 쪽에서도 이것을 할 수있는 확실한 방법이 있는지 확신하지 못합니다.

답변

1

두 가지 경로를 설명하고 더 나은 대답을 기대합니다.

먼저 요청 필터에서 쿼리 문자열을 수정하려고했지만 시도 할 수 없었습니다. AutoQuery.Execute를 호출하기 전에 params를 가져 와서 수정하여 수동으로 autoqueries를 실행해야했습니다. 이런 식으로 뭔가 :이 할 수있는 더 글로벌 방법이 있었으면 좋겠어

var requestparams = Request.ToAutoQueryParams(); 
var q = AutoQueryDb.CreateQuery(requestobject, requestparams); 
AutoQueryDb.Execute(requestobject, q); 

. 확장 메서드는 모든 쿼리 문자열 매개 변수를 반복하고 필요한 항목을 추가합니다.

위의 작업을 수행 한 후, 나는 다르게 그 일을 조사하므로 결과에 매우 행복하지 않았다과 함께 결국 다음

을 자신의 해당 서비스 스택 자동 쿼리들에 검도 그리드 필터 작업을 등록 :

var aq = new AutoQueryFeature { MaxLimit = 100, EnableAutoQueryViewer=true }; 
     aq.ImplicitConventions.Add("%neq", aq.ImplicitConventions["%NotEqualTo"]); 
     aq.ImplicitConventions.Add("%eq", "{Field} = {Value}"); 

다음, 그리드의 읽기 동작에, 우리는 쿼리 문자열 포맷해야 : 이제

read: { 
           url: "/api/stuff?format=json&isGrid=true", 
           data: function (options) { 
            if (options.sort && options.sort.length > 0) { 
             options.OrderBy = (options.sort[0].dir == "desc" ? "-" : "") + options.sort[0].field; 
            } 
            if (options.filter && options.filter.filters.length > 0) { 
             for (var i = 0; i < options.filter.filters.length; i++) { 
              var f = options.filter.filters[i]; 
              console.log(f); 
              options[f.field + f.operator] = f.value; 
             } 
            } 

           } 

를, 그리드가 보내드립니다 Autoquery 친근한 방식으로 작동합니다.