2011-12-14 3 views
0

Dojo 1.6의 DataGrid에 문제가 있습니다. HtmlStore에서 DataGrid를 만들고 일부 작업에 대한 마지막 열 링크에 셀을 넣고 싶습니다. 문서에서 escapeHtmlInData = "false"옵션을 사용하면 읽을 수 있지만 작동하지 않습니다. 위험하다는 것을 알고 있습니다 (XSS 공격). 그러나 포맷터가있는 솔루션은 나에게 적합하지 않습니다. 그래서 escapeHtmlinData가 작동하지 않는 이유를 모르겠습니다. 어쩌면 HtmlStore의 잘못인가? 누군가 비슷한 문제가 있었 을까? 코드 조각을 붙여 넣을 수는 있지만 장고와 도장을 사용합니다. 다른 사람을 위해Dojo의 DataGrid 셀에 html 표시

+0

내 문제를 해결 탈출하지 않는 열 이름을 가진 배열입니다. 그것은 HtmlStore에 의해 잘못되었습니다. 이 클래스를 확장하고 getValues ​​() 함수를 재정의했습니다. – citos88

답변

1

:

dojo.extend(dojox.data.HtmlStore,{ 
    getValues: function(item,attribute){ 

     this._assertIsItem(item); 
     var index = this._assertIsAttribute(attribute); 
     if(index>-1){ 
       var text; 
       if(item.cells){ 
         if({%for value in noEscapeData%}attribute=="{{value}}"{%if not forloop.last %} || {%endif%}{%endfor%}){ 
           text = item.cells[index].innerHTML; 
         }else{ 
           text = dojox.xml.parser.textContent(item.cells[index]); 
         } 
       }else{//return Value for lists 
         text = dojox.xml.parser.textContent(item); 
       } 
       return [this.trimWhitespace?dojo.trim(text):text]; 
     } 
     return []; //Array 
    }, 
}); 

noEscapeData 데이터