2012-09-07 1 views
8

У меня есть jquery datatable на моей странице, которая использует обработку на стороне сервера для извлечения данных. В этом случае один из столбцов содержит контент HTML, таким образом, мои ответы сервера выглядит следующим образом:jQuery Datatables показать содержимое html

"aaData": [ [1, "aaa", "<span class="myclass">html here</span>" ], ... 

I судимое с

"aoColumnDefs": [ "aTargets":[2], "sType": "html" } 

Но я все еще вижу содержимое ячейки, как если бы это были простые строка. Что мне делать?

ответ

5

Сделано рабочую версию с

"aoColumnDefs": [ 
    { "aTargets": [2], 
     "sType": "html", 
     "fnRender": function(o, val) { 
      return $("<div/>").html(o.aData[2]).text(); 
     } 
    } 
] 

декодирования назад HTML с JQuery.

0
var renderAsHtml = function (data, type, full) { 
return decHTMLifEnc(data); 
}; 
var isEncHTML = function(str) { 
    if(str.search(/&amp;/g) != -1 || str.search(/&lt;/g) != -1 || str.search(/&gt;/g) != -1) 
     return true; 
    else 
     return false; 
}; 

var decHTMLifEnc = function(str){ 
    if(isEncHTML(str)) 
     return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>'); 
    return str; 
} 

передать renderAsHtml как функцию ссылки на fnRender. Это также работает

0

Это, как я сделать HTML-теги в моих DataTable столбцов:

ajax: "getData?userobjid=<%=session.getAttribute("userobjectid")%>&alpha=&selectsuppliersflag="+selectsuppliersflag, 
columns: [ 
      { data: null, render: function (data, type, row) { 
       if(data.storeFrontUrl == 'undefined' || data.storeFrontUrl==null){ 
         return "<label>"+data.companyName+"</label>"; 
         } 
         else{ 
         return "<a href='JavaScript:newPopup(\"directorylist/view/"+data.storeFrontUrl+"\");'>"+data.companyName+"</a>"; 
        } 
        }}, 
2

Я обновляю ответ SamuGG, за новой DataTable версии:

"aoColumnDefs": [ { 
        "aTargets": [ 5 ], 
        "mRender": function (data, type, full) { 
         return $("<div/>").html(data).text(); 
         } 
      } ]