2012-05-28 3 views
1

PHP와 MySQL에서 DataTables를 사용하고 있는데 결과가 좋지만 행 클래스를 설정하는 데 많은 문제가 있습니다. 내 SQL 테이블에 "blue_class", "green_class", "red_class"와 같은 값이 들어있는 "class_style"이라는 열이 있습니다 ...DataTables에서 행 클래스를 설정할 수 없습니다.

내 목표는 결과의 모든 행에서이 클래스 이름을 선언하는 것입니다. 빨간색 배경의 "red_class"행을 표시 할 수 있습니다 (예 : http://www.datatables.net/release-datatables/examples/basic_init/zero_config.html). 빨간색으로 표시된 부분은 http://www.datatables.net/release-datatables/examples/basic_init/zero_config.html입니다.

내가 일 것이라고 생각하는 코드는 다음과

echo "<tbody>"; 
    for($i=0; $i < $number_of_results; $i++){ 
     echo "<tr class='" . mysql_result($result, $i, 'class_style') . "'>";; 
      echo "<td>" . mysql_result($result, $i, 'family_name') . "</td>"; 
      echo "<td>" . mysql_result($result, $i, 'team') . "</td>"; 
     echo "</tr>";   
    }; 
echo "</tbody>"; 

나는 테이블의 각 행은 다음 클래스로 표시되고있는 브라우저로 페이지를 열 때 : 심지어

<tr class='odd'> 
<tr class='even'> 

다음과 같은 덜 자동화 된 솔루션을 사용하면

echo "<tbody>"; 
    for($i=0; $i < $number_of_results; $i++){ 
     echo "<tr class='my_class'>";; 
      echo "<td>" . mysql_result($result, $i, 'family_name') . "</td>"; 
      echo "<td>" . mysql_result($result, $i, 'team') . "</td>"; 
     echo "</tr>";   
    }; 
echo "</tbody>"; 

<tr class='my_class odd'> 
<tr class='my_class even'> 

어떻게이 문제의 해결책을 얻을 수 있습니까? 나는 다음과 같은 결과에 도달하고 싶습니다 :

<tr class='green_class'> 
    <td>Smith</td> 
    <td>the Duck</td> 
</tr> 
<tr class='red_class'> 
    <td>Jackbson</td> 
    <td>Big great team</td> 
</tr> 
<tr class='green_class'> 
    <td>Awaiters</td> 
    <td>the flowers</td> 
</tr> 

답변

0

시도를

echo "<tbody>"; 
    for($i=0; $i < $number_of_results; $i++){ 
     if($i%2==0){ 
      echo "<tr class='even'>"; 
      else 
      echo "<tr class='odd'>"; 
      echo "<td>" . mysql_result($result, $i, 'family_name') . "</td>"; 
      echo "<td>" . mysql_result($result, $i, 'team') . "</td>"; 
     echo "</tr>";   
    }; 
echo "</tbody>"; 
4

당신이 후, 클라이언트 측에 다시 전송 한 후 서버 측에서 테이블을 렌더링하고있는 것 같습니다 당신은 그것에 DataTables를 호출하고 있습니다. 그 맞습니까?

대체 방법은 "server-side processing"모드에서 DataTables를 사용하는 것입니다. 즉, 서버는 현재 "페이지"에 대한 데이터의 JSON 만 되돌려 보낼 것입니다. 또는 데이터 소스가 특별히 크지 않은 경우 Ajax 소스 (JSON 만 반환해야하지만 전체 데이터 세트)를 사용할 수도 있습니다. 그런 다음 fnRowCallback 함수 [편집 : 이제는 간단히 "rowCallback"이라는 1.10에서 호출]을 사용하여 행의 스타일을 지정할 수 있습니다. 데이터 집합에서 클래스 이름을 가져 와서 jQuery를 사용하여 행에 추가합니다. 이 같은

뭔가 : (그냥 날이 초대되지 않은 내 코를 파고 이후)은 무시할 수 있음을 제외하고 완전히 현학적으로

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
    var rowClass = aData[4] // imagining that your class is found in column 4 
    $(nRow).addClass(rowClass); 
    } 
} 


는 색깔의 클래스를 사용하는 것은 아마도 최적이 아닌 장기적인 결정. "빨강", "초록"등은 모두 개별 레코드의 일종의 상태에 해당한다고 가정합니다. 아마도 "녹색"은 "현재 활성화되어있다"는 의미 일 수도 있습니다. 언젠가는 "보라색"이 실제로 "현재 활성"(또는 무엇이든)을 나타내는 더 좋은 색상이라고 판단 할 수 있기 때문에 외관이 아닌 목적을 반영하는 클래스를 사용해야합니다.

1

보고 당신이 행

var table = $('#example').DataTable(); 
var id = 99; 

table 
    .row 
    .add(['cell-1', 'cell-2', 'cell-3', 'cell-4',]) 
    .draw() 
    .nodes() 
    .to$() 
    .addClass('js__list-item-'+id); 

고유 클래스를 추가하고 필요

<tr class="js__list-item-99 odd" role="row"> 
    <td>cell-1</td> 
    <td>cell-2</td> 
    <td>cell-3</td> 
    <td>cell-4</td> 
</tr> 
2

확인 문서 : 이것은 자신의 포럼에서 직접 끌어

'DT_RowClass' => 'class', 

:이 완료 일단 당신은 행의 클래스 이름은 DataTable을 자신의 형식을 사용한다 무엇을 당신의 JSON 또는 PHP 배열로 지정할 수 있습니다 여기 :

jQuery('.js-dataTable-full').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "/path/to/ajax", 
     "createdRow": function(row, data, index) { 
      if(data.condition) { 
       $(row).addClass('warning'); 
      } 
     }, 
}); 
: https://datatables.net/reference/option/createdRow

이 같은이 문제를 해결

관련 문제