2016-06-12 3 views
1

DataTables의 컨텍스트에서 정렬 된 행의 인덱스를 얻으려면 어떻게해야합니까?정렬 된 행의 인덱스를 가져 옵니까?

4 (즉, 다섯 번째 열)에 메시지 번호가 포함 된 페이지 매김, 정렬 및 필터링 가능한 표가 있습니다. 현재 페이지를 해당 메시지 번호를 표시하는 것으로 전환하는 함수를 작성하고 해당 항목을 포함하는 행을 강조 표시합니다.

var currentHighlight = null; 

function goToMessageNumber(number) { 
    var table = $('#messages').DataTable(); 

    // remove current highlight 
    if (currentHighlight) { 
    $(table.row(currentHighlight).nodes()).removeClass('highlight'); 
    } 

    // find the row we need 
    var index = table.column(4).data().indexOf(''+number); 
    if (index === -1) { 
    return; 
    } 

    currentHighlight = index; 

    // add new highlight 
    $(table.row(currentHighlight).nodes()).addClass('highlight'); 

    // go to page 
    var page = Math.floor(currentHighlight/table.page.len()); 
    table.page(page).draw(false); 
} 

테이블이 초기 정렬 순서에있는 경우 완벽하게 작동합니다. 그러나 필터 또는 정렬 적용 할 때이 실패합니다. 여기서 쉬운 해결책은 무엇입니까?

+0

''요소를 의미하는 경우, 언제나 '.rowIndex' 속성으로 색인을 얻을 수 있습니다. 아니면 도서관에 특정한 것을 묻고 있습니까? –

+0

@squint : 예, [DataTables] (https://datatables.net/)에만 해당됩니다. – Claudiu

답변

0

현재 { search: 'applied' } 주문에서 every() 행을 반복 할 수 있습니다.이 값은 찾고자하는 값이있는 현재 페이지를 계산합니다. 여기서 특정 이름을 찾고 예시도이다

$('#goto').on('click', function() { 
    var page, data, count = 0; 
    table.rows({ search: 'applied' }).every(function(rowIdx, tableLoop, rowLoop) { 
    count ++ 
    data = this.data() 
    if (data[1] == 'Airi Satou') { 
     page = Math.floor(count/table.page.len()) 
     table.page(page).draw('page') 
     return 
    } 
    }) 
}) 

데모 ->http://jsfiddle.net/1o3fLcqy/

Airi Satou가 위치한 페이지로 상기 점프없이/필터링 정렬 (Airi Satou 됨 존재 가정 현재 행). # 5 열의 메시지 번호와 동일하게하십시오. 로우/<tr> 조작 대하여


, rowIdx는 원래의 인덱스를 보유하고있다. 그래서 당신은 이것을 할 수 있습니다 :

table.row(rowIdx).nodes().to$().addClass('highlight') 
관련 문제