2010-12-28 2 views
1

Я запускаю панель загрузки в методе init и скрываю ее в событии ReturnDataPayload. Это прекрасно работает, когда в таблице данных есть некоторые значения. Но когда нет данных, возвращаемых из базы данных, элемент управления не собирается возвращать событиеDataPayLoad. Пожалуйста, помогите мне найти событие, которое будет запущено, даже если в ответе нет данных или скажите мне, как скрыть панель загрузки.Когда данные не возвращаются из базы данных

ответ

0

Если вы хотите пользовательского поведения, используйте метод DataSource в SendRequest из DataSource в DataTable в

(function() { 
    var YdataTable = YAHOO.widget.DataTable, 
     YdataSource = YAHOO.util.DataSource; 

    var settings = { 
     container:"<DATATABLE_CONTAINER_GOES_HERE>", 
     source:"<URL_TO_RETRIEVE_YOUR_DATA>", 
     columnSettings:[ 
      {key:"id", label:"Id"} 
     ], 
     dataSourceSettings:{ 
      responseType:YdataSource.TYPE_JSON, 
      responseSchema:{ 
       resultsList:"rs", 
       fields:[ 
        {key:"id"} 
       ] 
      } 
     }, 
     dataTableSettings:{ 
      initialLoad:false 
     } 
    } 

    var dataTable = new YdataTable(
        settings.container, 
        settings.columnSettings, 
        new YdataSource(
        settings.source, 
        settings.dataSourceSettings), 
        settings.dataTableSettings); 
})(); 

иметь в виду Независимо от того, какой источник не ваши данные: XML, объект JSON, JavaScript, TEXT, вы всегда будет получать ваши данные единым способом через метод sendRequest DataSource. Так что, если вы хотите получить данные и, в то же время, добавить пользовательское поведение, используйте его

dataTable.getDataSource().sendRequest(null, { 
    success:function(request, response, payload) { 
     if(response.results.length == 0) { 
      // No data returned 
      // Do what you want right here 
      // You can, for instance, hide the dataTable by calling this.setStyle("display", "none"); 
     } else { 
      // Some data returned 
      // If you want to use default the DataTable behavior, just call 

      this.onDataReturnInitializeTable(request, response, payload); 
     } 
    }, 
    scope:dataTable, 
    argument:dataTable.getState() 
}); 

Свойства отклика

  • результаты (Array): Ваш источник данных в единым способом. Для каждого объекта в результатах Array, Существует свойство свойства в соответствии с свойством свойства responseSchema. Обратите внимание, я использую response.results.length , чтобы проверить, если некоторые данные были возвращены
  • ошибка (Boolean): Указывает, ошибка в данных
  • кэшируются (Boolean): Указывает, кэшируется ответ
  • мета (Object): схе- сгенерированные метаданные

на YUI dataTable page, искать Загрузку данных во время выполнения, чтобы увидеть некоторые встроенные функции, предусмотренных YUI DataTable

Я надеюсь, t может быть полезен и не стесняйтесь обращаться за помощью ко всему, что вы хотите о YUI. См. demo page прекрасных функций YUI dataTable

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