Как flexigrid работает с массивами? - PullRequest
0 голосов
/ 28 января 2012

У меня есть база данных xml, и я хотел бы вставить ее во flexigrid. Поскольку ajax-запрос flexigrids читает только файлы, отформатированные определенным образом, и я не могу изменить свою базу данных, я хотел бы знать, что если сделать внешний ajax-запрос и поместить все данные в ассоциативный массив, я могу заполнить свою flexigrid; если да, то как? Я попытался создать таблицу и применить flexigrid в качестве метода, но полученная сетка не работает (столбцы выровнены неправильно, я не могу их отсортировать и т. Д.). Мой ассоциативный массив выглядит следующим образом:

    MyArray[i] = {'Name': name, 'Address': address, 'Category': category}

1 Ответ

0 голосов
/ 28 января 2012

Flexigrid работает в формате Json или XML.Для обоих типов они должны быть в определенном формате.

Формат XML должен быть точно таким:

<rows>
    <page>1</page>
    <total>2</total>
    <row id="reg1">
        <cell>reg1-cell1</cell>
        <cell>reg1-cell2</cell>
    </row>
    <row id="reg2">
        <cell>reg2-cell1</cell>
        <cell>reg2-cell2</cell>
    </row>
</rows>

На вашей стороне сервера вы должны проанализировать исходный XMLфайл и заново сгенерируйте этот конкретный формат XML.

Относительно проблемы сортировки: после нажатия на один из столбцов flexigrid отправляет несколько параметров в определенный url , как показано ниже:

 $("#flex1").flexigrid({
                url: 'staff.php'
             });

Отправляет отсортированный столбец, порядок и многое другое.На стороне сервера вы получите переданные параметры для повторной сортировки строк.

Для получения дополнительной информации посетите страницу Документация .

Обновление: Допустим, у вас есть массив ( Customers ), в котором хранятся ваши данные.В этом случае мы создадим объект, который будет хранить ваши данные, но в формате Json следующим образом:

function formatCustomerResults(Customers){

     var rows = Array();

     for (i = 0; i < Customers.length; i++) {
         var item = Customers[i];

         rows.push({ cell: [item.CustomerId,
                            item.Name,
                            item.Phone,
                            item.Address]
     });
     }

     return {
         total: Customers.length,
         page: 1,
         rows: rows
     };
 }`

Затем вы вызовете вашу функцию:

$("#FlexTable").flexAddData(formatCustomerResults(eval(data)));
...