2011-02-10 2 views
0

Я хотел бы изменить YUI DataTable по мере того, как запросы ajax будут завершены. Так, например, у меня есть 4 запроса ajax, запрашивающих вещи, которые занимают от 1 до 10 секунд. Я хотел бы начать строить таблицу при завершении запроса 1s и изменять таблицу снова каждый раз, когда заканчивается запрос ajax. Есть ли рекомендуемый способ сделать это в целом?Как изменить таблицу DataTable после ее построения

В частности, я хотел бы изменить способ форматирования столбца для отображения любых возможных ошибок, возникающих при обработке строки. Однако ошибка обрабатывается медленно, поэтому было бы полезно сначала отобразить данные, а затем добавить ошибки позже.

Большое спасибо за помощь!

Джейсон

ответ

0

я предполагаю ваши многочисленные запросы агрегирования данных столбца. Я также предполагаю, что таблица статична (не подкачки или сортировка на стороне сервера).

  1. Настройте определение столбца для DataTable, чтобы включить все столбцы из всех источников.
  2. Создайте источник данных, указывающий на URL-адрес службы самого быстрого запроса.
  3. Создайте экземпляр DataTable с помощью этого источника данных.
  4. Либо создать больше DataSources для других услуг, или позвоните по телефону YAHOO.util.Connect.asyncRequest (...) для каждого другого сервиса
  5. обратных вызовов для каждого из этих запросов на обслуживание должны сделать что-то вдоль этих линий:

(псевдо-код впереди)

function callback(data) { 
    var recordset = myDataTable.getRecordSet(), 
     records = recordset.getRecords(), 
     i, len, rec; 

    for (i = 0, len = records.length; i < len; ++i) { 
     rec = records[i].getData(); // will return an object literal with data info 
     /* match the record object to the new data and update the record object */ 
    } 

    recordset.setRecords(records); 
    myDataTable.render(); 
} 

Таким образом, каждая дополнительная услуга будет добавить данные на уровне записи, то полный стол пользовательский интерфейс будет обновлен.

НТН

+0

Эй Люк, я не думаю, что вам нужно сделать recordset.setRecords (записей), я считаю, вы изменяете ссылки, поэтому, когда я сделал myDataTable.render() он просто делает с новые данные. Фактически, когда я сделал вещь setRecord, она фактически уничтожила все данные (визуально) по какой-то причине ... – FurtiveFelon

+0

Хороший звонок. setRecords не требуется. Не уверен, почему он уничтожил его (очевидно, немного плохого кодирования), но это все равно. – Luke

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