2013-05-01 1 views
1

Есть ли более эффективный способ отображения подсказки инструмента, когда ячейка зависает? Используя атрибут структуры для форматирования datagrid, существует ли способ использования форматирования для отображения tooltip dijit вместо использования атрибута title html.Показать подсказку dijit с помощью Dojo DataGrid и JSonRestStore

Вот столбец, в котором отображается подсказка.

var subscriberGridLayout = [   
     {  
      name: " ", 
      field: "ExpirationDate", 
      formatter: function(value){ 
       if(value){ 
        expDate = formatDateIE(value); 
        return toolTip(); 
       } 
       else 
        return " "; 
      }, 
      styles: "text-align: center;", 
      width: "30px" 
     }, 

Вот функция, которая отображает значок всплывающей подсказки с помощью тега изображений, но вместо Dijit TOOLTIP он просто использует заголовок HTML для отображения всплывающего окна.

function toolTip(){ 
     src = "'/Subscriber/resources/images/icons/icon_error.gif'/>"; 
     if(dojo.date.difference(today, expDate) <= 0){ 
      message = "Credential expired."; 
      return "<img title='"+ message + "' src=" + src + ""; 
     } else if(dojo.date.difference(today, expDate) <= 60) { 
      message = "This Subscriber will expire in " + dojo.date.difference(today, expDate) + " days." 
         + "&#10; &#10;To prevent an interruption in the Subscriber&rsquo;s access, please sumbit a request to " + 
          "renew the Subscriber within 30 days of the expiration date."; 
      return "<img title='"+ message + "' src=" + src + ""; 
     } else { 
      return " "; 
     } 

    } 

ответ

4

Я хотел бы сделать что-то вроде:

new Tooltip({ 
    connectId: grid.domNode, 
    selector: "td", 
    getContent: function(matchedNode){ 
     return matchedNode.innerText 
    } 
}); 

С grid.domNode вы можете получить сгенерированный DOM вашего виджета. Сетка генерирует табличную структуру, поэтому вы можете получить ячейки, используя свойства selector и getContent.

Я должен сказать, что это не совсем правильный способ сделать это, потому что теперь вы играете с внутренней структурой виджета Dojo. Если они когда-то решают не использовать таблицу в качестве структуры DOM, ваш код не будет работать.

Но я не думаю, что есть лучший способ достичь этого, в конце концов вам всегда придется переводить ячейку Dojo на узел DOM (поскольку всплывающие подсказки основаны на DOM). Конечно, вы можете подключить всплывающую подсказку к каждой ячейке, но я пробовал это раньше, и она была немного глючной (иногда всплывающая подсказка не всплывала).

Я также сделал JSFiddle, чтобы показать вам рабочий пример.

Смежные вопросы