2010-05-12 2 views
1

ColdFusion 8CFGRID - 둘 이상의 열에서 데이터 저장소 또는 필터를 바꿉니다.

쿼리를 기반으로하는 cfgrid가 있습니다. 페이징 그리드가 아닌 스크롤 그리드가 필요하기 때문에 cfc 함수에 바인딩되지 않습니다 (BIND를 사용한다면 페이지 번호와 페이지 크기를 제공해야합니다). 다음 코드는,하지만 난 정말 값의 첫 번째 쌍보다 더 많은 것을 무시 ...

grid.getDataSource().filter("OT_MILESTONE",t1);

트릭을하지 않습니다 필터 문자열에 더 많은 추가 ... 세 개의 열을 필터링 할 필요가있다.

so .. 나는 3 개의 값을 전달하고 쿼리 결과를 반환하는 함수를 호출하면 그리드의 데이터 저장소를 바꿀 수 있다고 생각했지만 ..이 데이터를 가져올 구문을 이해할 수는 없습니다. 바꾸다.

{"COLUMNS":["SEQ_KEY","ID","OT_MILESTONE"],"DATA":[[63677,"x","y"]]} 

어떤 아이디어 :

쿼리에 대한 반환 변수의 형식은 다음과?

답변

0

많은 피, 땀, 눈물과 대답은 하나 개 이상의 변수에 의해 cfgrid를 필터링해야 할 수도 있습니다 경우 다른 사람에, swearing..here의 후 :

  var w1 = ColdFusion.getElementValue('wbs'); 
      var t1 = ColdFusion.getElementValue('task');  
      var p1 = ColdFusion.getElementValue('project'); 

      grid = ColdFusion.Grid.getGridObject('data'); 
      store = grid.getDataSource(); 
      store.clearFilter(); 
      store.filterBy(function myfilter(record) { 
        var wantit = true; 
         if (trim(w1) != '') { 
          if(record.get('WBS_ID') != w1) { 
           wantit = false; 
         }} 
         if (trim(t1) != '') { 
          if(record.get('OT_MILESTONE') != t1) { 
           wantit = false; 
         }} 
         if (trim(p1) != '') { 
          if(record.get('PROJECT') != p1) { 
           wantit = false; 
         }} 

        return wantit; 
       }); 

      ColdFusion.Grid.refresh('data',false); 

012 트림 기능이 필요합니다.

열 이름이 대문자인지 확인하십시오 ...

1
+0

예, 실험 중 하나였습니다. 페이지 번호와 페이지 크기가 필요해서 ... 사용할 수 없습니다. 페이지 크기와 레코드 수를 1로 설정하여 '가짜'시도를 시도했지만 그리드가 자동으로 거대한 페이징 그리드로 바뀝니다. – Casuzen

+0

답변이 업데이트되었습니다. – Henry

+0

Dan Vega의 단일 필터 코드를 얻은 곳입니다. 다른 두 개는 페이지와 페이지 크기가있는 바운드 격자를 사용하고 있습니다. 여기 코드로 놀았습니다. http://stackoverflow.com/questions/1805954/ appending-data-to-gridpanel-in-extjs는 필요한 조각으로 JSON 반환을 파싱했지만 저장소를 실제로 교체하지는 못했습니다. – Casuzen

관련 문제