Когда данные не возвращаются из базы данных - PullRequest
1 голос
/ 28 декабря 2010

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

1 Ответ

0 голосов
/ 29 декабря 2010

Если вы хотите настраивать поведение, используйте метод sendRequest объекта DataSable источника данных 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()
});

Свойства ответа

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

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

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

...