2012-08-24 3 views
0

jQuery 또는 모든 JavaScript 프로그래밍에 익숙하지 않다는 말로 시작하겠습니다. 어떤 멍청한 실수라도 용서해주십시오.SlickGrid를 적용하여 Andrew Childs 필터를 마스터 브랜치의 최신 버전에 적용하십시오.

사용자의 역할에 따라 다른 데이터 집합을로드하는 SlickGrid를 사용하는 회사 용 웹 응용 프로그램을 만들고 있으므로 입력란이 하드 코딩되지 않고 동적 SQL 쿼리에 의해 정의됩니다.

SlickGrid의 포크에 Andrew Child의 필터를 적용하여 master 분기의 최신 버전에 적용하고 싶습니다. 이 예제에서는 필터가 표시됩니다. https://github.com/andrewchilds/SlickGrid/blob/master/examples/example15-fork-feature-demo.html

필터링 헤더 요소를 추가하기 위해 (호출기 컨트롤을 템플릿으로 사용하는) 컨트롤을 만들었습니다. 멋지다! 이제는 기능 만 할 필요가 있습니다. 다음 https://github.com/mleibman/SlickGrid/blob/master/examples/example4-model.html에서 필자는이 함수를 수정하여 열을 반복하고 필터 유형과 열 이름을 하드 코딩하는 대신 필터 유형과 열 이름을 반환해야하는 것처럼 보입니다.

function myFilter(item, args) { 
    if (item["percentComplete"] < args.percentCompleteThreshold) { 
    return false; 
    } 

    if (args.searchString != "" && item["title"].indexOf(args.searchString) == -1) { 
    return false; 
    } 

    return true; 
} 

내 질문은 :

  1. 는 바른 길에있는에 나는 근처에도 있나요?
  2. 1로 설정하면 myFilter() 및 dataView.compileFilter()를 어떻게 수정합니까?

도움 주셔서 감사합니다.

답변

0

안녕하세요!

필터 기능 (귀하의 경우 myFilter)이 DataView의 모든 항목 (행)에 적용됩니다. 열이 하드 코딩되지 않은 경우 grid.getColumns()을 사용하여 열 목록을 가져올 수 있습니다. 예로서, 필터 함수 내에서 살펴 :

function filter(item) { 
    for (var columnId in columnFilters) { 
    if (columnId !== undefined && columnFilters[columnId] !== "") { 
     var c = grid.getColumns()[grid.getColumnIndex(columnId)]; 
     if(c.field == "...") { 
      // return filtered items 
     } 
     else { 
      // return false 
     } 
    } 
    } 
return true; 
} 
여기

columnFilters 여과 될 내 값을 격납하는 배열이다.

궁금한 점이 있으면 알려주세요.

+0

그 코드는 SlickGrid 예 https://github.com/mleibman/SlickGrid/blob/master/examples/example-header-row.html의 코드입니까? 예제 4보다 더 좋은 방법일까요? 보기 4는 더 우아한 솔루션처럼 보였습니다 ... btw, 초고속 응답에 감사드립니다! – ylreed

+0

그 코드는 내 페이지에 있습니다. SlickGrid 예제 중 하나 인 것 같지만 기억이 안납니다. 동적으로 생성 된 열을 사용하는 경우에도 필터링이 작동하는 방식에 대한 예제를 제공하고자했습니다. – ganeshk

+0

감사합니다 ganeshk! 그것을 얻는 데 약간의 시간이 걸렸지 만 지금은 효과가 있습니다! 나는 그것이 필요했던 것보다 더 복잡하게 만들었습니다. – ylreed

관련 문제