2014-10-13 2 views
0

SlickGrid에서 데이터보기가 작동하는 데 그리드 및 데이터 뷰가 syncGridSelection을 사용하여 선택 사항을 수정 및 삭제하도록 동기화되지만 변경된 CSS 스타일에서는 흥미로운 문제가 발생합니다. 변경된 행 CSS stlye는 실제 변경된 행을 포함하지 않는 필터 세트를 선택할 때 그리드의 동일한 "보이는"행 번호에 적용됩니다. 정렬 잘 작동하지만 필터가 작동하지 않는 것으로 나타났습니다. 누구든지이 문제를 해결할 수 있습니까? SlickGrid를 처음 사용하기 때문에 최대한 많은 정보와 코드를 붙여 넣을 수 있습니까? 그리드를로드하는 코드를 붙여 넣었습니다.SlickGrid CSS 스타일이 필터링 된보기에 잘못되었습니다.

function LoadGridData() { 
      $.getJSON('@Url.Action("GetConfigurations")', function (rows) { 
       if (rows.length > 0) { 
        if (rows[0].id = 'undefined') { 
         $(rows).each(function (index) { 
          rows[index].newAttribute = "id" 
          rows[index]["id"] = index; 
         }); 
        } 
       }; 
       data = rows; 
       dataView.beginUpdate(); 
       dataView.setItems(data); 
       dataView.setFilter(filter); 
       dataView.endUpdate(); 

       // Refresh the data render 
       grid.invalidate(); 
       grid.render(); 
       grid.setSelectedRows([]); 

       dataView.syncGridSelection(grid, true); 

      }); 
     } 

답변

0

디버깅 후 나는 getItemMetadata 함수에서 변경된 CSS를 표시하는 이전 예제를 사용했다는 것을 알아 냈습니다. 올바른 코드는 다음과 같습니다. 이전에는 데이터 [행]을 참조하고있었습니다. DataView를 Grid에 동기화 할 때 getItem() 메서드는 올바른 행을 반환합니다. 이 경우 내 DataState는 뷰 모델에서 내 자신의 변경된 표시기입니다.

dataView.getItemMetadata = function (row) { 
      var item = this.getItem(row); 
      if (item && item.DataState == 2) { 
       return { 
        "cssClasses": 
         "changed" 

       }; 
      } 
관련 문제