JQuery Grid колонки.

Обсуждаются вопросы использования плагинов для jQuery, созданных сторонними разработчиками.

Модераторы: TRAHOMOTO, tuareg

Re: JQuery Grid колонки.

Сообщение TRAHOMOTO » 16 сен 2010, 16:26

так как запрос на получение основной части грида выполняется последним

Может вы имели ввиду получение данных? Я не совсем понял что вы имеете ввиду под термином "страница". Давайте подробнее
Предполагается наличие объекта
Аватар пользователя
TRAHOMOTO
Модератор
 
Сообщений: 513
Зарегистрирован: 19 янв 2010, 17:18
Откуда: Украина, Луганск

Re: JQuery Grid колонки.

Сообщение nike__ » 16 сен 2010, 16:54

Ну подробней так подробней:)
Код: выделить все
<script language="javascript">

   $(function(){           
    var jsonColModel = GetSchema();
    var jsoncolNames = GetHeaders();
    var caption = GetCaption();
   $('#diary').jqGrid({
      url:'/engine/ajax/ajax_kernel.php?do=grid',
      datatype: 'xml',
      mtype: 'POST',
      caption:caption,
      width:600,
      colNames:jsoncolNames,
      colModel :jsonColModel,
     pager: $('#tablePager'),
});           
});
function GetCaption()
{
var result = $.ajax({
        url: '/engine/ajax/ajax_kernel.php',
      type:"POST",
        dataType:'text',
        async: false,
      data:({"do":"grid","capt":'true'})
    });
    return result.responseText;
}
function GetHeaders() {

    var result = $.ajax({
        url: '/engine/ajax/ajax_kernel.php',
      type:"POST",
        dataType:'json',
        async: false,
      data:({"do":"grid","head":'true'})
    });

    return jQuery.parseJSON(result.responseText);
}   
function GetSchema() {

    var result = $.ajax({
        url: '/engine/ajax/ajax_kernel.php',
      type:"POST",
        dataType:'json',
        async: false,
      data:({"do":"grid","ajax":'true'})
    });

    return jQuery.parseJSON(result.responseText);
}   
</script>

^ Код инициализации jqgrid - сначала идут аякс запросы на получение модели колонок и имен колонок,заголовка таблицы, потом после получаниея этого всего сам грид отправляет запрос на получение данных в которм передает page,rows,sidx,sord. Но так как у меня каждой странице соотвествует календарный месяц то колонки на каждой странице разные, проблема состоит в том что для того чтобы получить колонки с сервера за каждый месяц нужна переменная page которая отсылается на сервер последней и первые 2 запроса о ней не сном не духом. Надеюсь понятно обьяснил
nike__
 
Сообщений: 26
Зарегистрирован: 20 фев 2010, 14:28

Re: JQuery Grid колонки.

Сообщение TRAHOMOTO » 17 сен 2010, 17:11

1. Вы последовательно выполняете три синхронных запроса, но это все можно сделать одним асинхронным например так:
Клиент:
Код: выделить все
$(function(){
   //-------------------------------------------------------
   // Определяем функцию
   function makeGrid(){     
                 $.ajax({
                            type: 'POST',
                            data: {operation: 'get_grid_details'},
                            url: '/engine/ajax/ajax_kernel.php',
                            dataType: 'json',
                            success: function(server){
                            //----------------------------
                            // Инициализируем грид
                                $('#diary').jqGrid({
                                          url:'/engine/ajax/ajax_kernel.php',
                                          datatype: 'xml',
                                          mtype: 'POST',
                                          postData: {operation: 'get_grid_data'},
                                          caption: server.caption,
                                          width:600,
                                          colNames:server.colNames,
                                          colModel: server.colModel,
                                          pager: $('#tablePager'),
                               });
                            //----------------------------             
                            },
                            error: function(){
                                    alert('Запрос завершился неудачей! Повторите операцию');
                            }
                    });
   }
   //-------------------------------------------------------
   //
   //-------------------------------------------------------
   // Используем
    makeGrid();
   //-------------------------------------------------------
});


Сервер ajax_kernel.php:
Код: выделить все
if($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){
   $oper = $_POST['operation'];
   
   switch($oper){
       case 'get_grid_details':
            $data->caption = 'Таблица 1';
            $data->colNames = array('Колонка 1','Колонка 2','Колонка 3');

            $colModel1->name = 'col1';
            $colModel1->index = 'col1';
            $colModel1->width = 100;
           
            $colModel2->name = 'col2';
            $colModel2->index = 'col2';
            $colModel2->width = 100;

            $colModel3->name = 'col3';
            $colModel3->index = 'col3';
            $colModel3->width = 100;

            $data->ColModel  = array($colModel1,$colModel2,$colModel3);

            header("Content-type: application/json;charset=utf-8");
            echo json_encode($data);
       break;

       case 'get_grid_data':
           // Бла бла бла, запросы и прочая лабуда
       break;
   }
}else{
   echo 'ЭЭЭ! Скрипт работает только с AJAX!';
}


2. Если вы хотите обновить информацию в таблице, то используйте триггер reloadGrid
Код: выделить все
$('#diary').trigger('reloadGrid');


---------------------------------
Пожалуйста разберите пример и прочтите документацию, по не знакомым для вас моментам. Благодаря такому подходу вы сможете решать практически любые задачи
Предполагается наличие объекта
Аватар пользователя
TRAHOMOTO
Модератор
 
Сообщений: 513
Зарегистрирован: 19 янв 2010, 17:18
Откуда: Украина, Луганск

Re: JQuery Grid колонки.

Сообщение nike__ » 22 сен 2010, 18:30

Долго сидел и не мог понять почему Ваш код не работает, после часа експериментов нашел :)))
на сервере передавалось $data->ColModel , а на клиенте юзалось server.colModel )

Но мою проблему это так и не решило,хотя код стал значительно изящней)
Я хотел бы чтобы по перелючению в пейджере на следующую страницу (у меня месяц) загружались не только новые данные но и colModel,colNames.
Вопрос такой - можно ли повесить обработчик trigger(“reloadGrid”) на этот переключатель в пейджере?
nike__
 
Сообщений: 26
Зарегистрирован: 20 фев 2010, 14:28

Re: JQuery Grid колонки.

Сообщение TRAHOMOTO » 22 сен 2010, 20:00

Долго сидел и не мог понять почему Ваш код не работает, после часа експериментов нашел ))
на сервере передавалось $data->ColModel , а на клиенте юзалось server.colModel )

Если честно я специально сделал ошибку :oops: (вот такая я падла) и написал чтобы вы разобрались...
Я хотел бы чтобы по перелючению в пейджере на следующую страницу (у меня месяц) загружались не только новые данные но и colModel,colNames.
Вопрос такой - можно ли повесить обработчик trigger(“reloadGrid”) на этот переключатель в пейджере?

А попробуйте оседлать событие onPaging
Предполагается наличие объекта
Аватар пользователя
TRAHOMOTO
Модератор
 
Сообщений: 513
Зарегистрирован: 19 янв 2010, 17:18
Откуда: Украина, Луганск

Re: JQuery Grid колонки.

Сообщение nike__ » 23 сен 2010, 16:30

С onPaging вроде разобрался но с trigger('reloadGrid') не совсем
в документации написано
You should use gridUnload to reload new configuration with different colModel

при использовании етого метода таблица выгружается и дальше ничего не происходит. Я никак не могу разобратся как использовать эти методы чтобы они оба работали.
nike__
 
Сообщений: 26
Зарегистрирован: 20 фев 2010, 14:28

Re: JQuery Grid колонки.

Сообщение TRAHOMOTO » 24 сен 2010, 09:52

Листинги в студию
Предполагается наличие объекта
Аватар пользователя
TRAHOMOTO
Модератор
 
Сообщений: 513
Зарегистрирован: 19 янв 2010, 17:18
Откуда: Украина, Луганск

Re: JQuery Grid колонки.

Сообщение nike__ » 24 сен 2010, 20:14

Код: выделить все
$(function(){
   //-------------------------------------------------------
   // Определяем функцию
   function makeGrid(){     
                 $.ajax({
                            type: 'POST',
                            data: {'do':'grid',what:'get_grid_details'},
                            url: '/engine/ajax/ajax_kernel.php',
                            dataType: 'json',
                            success: function(server){
                            //----------------------------
                            // Инициализируем грид
                                $('#diary').jqGrid({
                                          url:'/engine/ajax/ajax_kernel.php?',
                                          datatype: 'xml',
                                          mtype: 'POST',
                                          postData: {'do':'grid',what:'get_grid_data'},
                                          caption: server.caption,
                                          width:600,
          colModel:server.colModel,
                                          colNames:server.colNames,
                                          pager: $('#tablePager'),
          onPaging: function(pgButton) {
                                   jQuery("#diary").jqGrid('setGridParam',{postData:{'do':'grid',what:'get_grid_data'}colNames:['1','2','3','4']}).trigger("reloadGrid");//гдето тут нужно выгрузитьь таблицу если выгрпужать перед тригером то таблица выгружается и перезагрузки не происходит....
                                                      }
                                        
                               });
                            //----------------------------             
                            },
                            error: function(){
                                    alert('Запрос завершился неудачей! Повторите операцию');
                            }
                    });
   }
   //-------------------------------------------------------
   //
   //-------------------------------------------------------
   // Используем
    makeGrid();
   //-------------------------------------------------------
});

Пока писал подумал что возможно нужно все параметры таблицы указать после GridUnload.Завтра попробую.
nike__
 
Сообщений: 26
Зарегистрирован: 20 фев 2010, 14:28

Пред.

Вернуться в Плагины jQuery

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 2

cron