DataTables 및 필터 기능을 사용하여 상속 한 프로젝트에 몇 가지 문제가 있습니다.DataTables로 필터링 된 행 식별
문제는 테이블을 채 웁니다 주요 기능으로는 다음과 같은 코드를 가지고 있다는 것입니다 : 내가 3 선이 거의 쓸모없는 것을 알고 이제
var rowPos = mainTable.fnAddData(tableData, false)[0];
var rowData = mainTable.fnSettings().aoData[rowPos];
$(rowData.nTr).attr("id", "UID" + id); // Since the id doesn't always match the row
rowData.ID = id;
을 fnAddData의 '거짓'인수하지 않는 한 'true'로 설정됩니다. 이는 HTML 요소가 'false'로 설정되었을 때 실제로 DOM에 존재하지 않으므로 'id'속성을 설정할 방법이 없기 때문입니다.
테이블에 수백 개의 행을 추가 할 때 약 4 초 만에 테이블을 렌더링하므로 'true'를 사용할 수 없습니다. 그러나 '거짓'을 사용하면 테이블을 거의 순간적으로 렌더링합니다 (1 초 미만). 따라서 'fnAddData()'에서 'true'플래그를 사용하는 것은 옵션이 아닙니다.
나는 마지막 줄이 뭔가를하고있는 것처럼 보이지만 나는 DataTables 웹 사이트에서 그 문서를 찾으려고 노력했지만 가치있는 것을 찾을 수없는 것 같습니다. 나는 누군가가 UID (unique record ID)를 실제 행 번호에 바인딩 할 수 있다고 가정하고 있는데, 이는 필수적으로 필요한 것이다.
내가 가진 코드는 또한이 때의 'id'속성을 설정하려고 'fnRowCallback'의 사용을합니다 :
var id = mainTable.fnSettings().aoData[tablePos].ID;
$(row).attr("id", "UID" + id); // Since the id doesn't always match the row
주요 문제는하지 않는 것이다 작업! 테이블 필터를 적용하고 'fnRowCallback'에서 'UID'3 인 레코드를 제외한 모든 레코드를 의도적으로 필터링하면 'id'변수가 0으로 설정됩니다. 따라서 속성 세트는 항상 'UID0'이며 모든 종류의 나쁜 참조.
테이블 행의 데이터베이스 레코드 ID를 올바르게 지정하는 방법이 있습니까? 그런 다음 'fnRowCallback'함수와 같이 나중에 참조하십시오. 아니면 누군가가 알아낼 수있는 다른 트릭이 있습니까?
시간과 답변에 미리 감사드립니다.
업데이트 : 2012.11.01 12:33 - 지금까지 다양한 결과를 바탕으로 답변을 추가했습니다. 여기 파고의 조금을하고 있었어요