2012-01-28 2 views
0

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

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

Какой язык программирования используете? – Anwar

+0

@Anwar i использовать jquery – pilettoturtle

+0

Помимо использования jQuery, я имел в виду ваш серверный язык? – Anwar

ответ

0

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' 
      }); 

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

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

Update: Давайте предположим, что у вас есть массив (Клиенты), который содержит данные. В этом случае мы создадим объект, который будет держать, что ваши данные, но в формате 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))); 
+0

Как я уже говорил в своем первом сообщении, я знаю, что flexigrid может читать мою базу данных только в том случае, если она написана определенным образом, и я не могу разобрать свой XML-файл: я просто хотел знать, могу ли я сделать то же самое, но использовать массивы вместо XML. – pilettoturtle

+0

Приносим извинения за непонимание, я обновил свой ответ и надеюсь, что он ответит на ваш вопрос. – Anwar

+0

В запросе ajax я построил свой массив, как вы мне сказали: rows.push ({ячейка: [id, \t название, имя]}); \t \t \t i ++; и когда запрос ajax завершен, я вызывал эту функцию, но она не дает никакого результата и ошибок ...: $ ("# table"). FlexAddData ({total: i, page: 1, rows: строки}); }, – pilettoturtle

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