Проблема с настройкой jqgrid, кнопка navGrid не отображается, слишком большие шрифты в сетке - PullRequest
0 голосов
/ 15 октября 2010

Мне удалось заставить работать jqGrid 3.8 в моем проекте (Zend Framework) с использованием json. Хотя базовая выборка данных работает, мне не удалось понять, почему я не вижу кнопок, отображаемых на панели навигации.вот что я сделал на стороне клиента:

<script type="text/javascript">

 $(function(){ 
 $("#roomgrid").jqGrid({ 
     url:'/admin/admin-room/view', 
     datatype: "json",
     autowidth: true, 
     colNames:['Room ID','Room Number','Room Type','Image', 'Price','Facilities'], 
     colModel:[ {name:'id',index:'id', width:55,editable:false,hidden:true,editoptions:{readonly:true,size:10}}, 
                {name:'room_number',index:'room_number', width:55,editable:false,editoptions:{readonly:true,size:10}}, 
                {name:'name',index:'name', width:80,editable:true,editoptions:{size:10}},  
                {name:'pic_url',index:'pic_url', width:90,editable:true,editoptions:{size:25}}, 
                {name:'price',index:'price', width:60, align:"right",editable:true,editoptions:{size:10}}, 
                {name:'facilities',index:'facilities', width:60, editable:true,editoptions:{size:10}}], 
    rowNum:5, 
    rowList:[5,8,10,20,30], 
    pager: '#paged',
    sortname: 'id',
    sortorder: "desc",
    viewrecords: true,
    caption: 'Manage Rooms'});
 });
$("#roomgrid").jqGrid('navGrid','#paged', {view: true,del:true}); 

</script>

<table id="roomgrid"></table>
<div id="paged"></div>

на стороне сервера у меня есть это:

public function preDispatch(){
    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout()->disableLayout();
}
public function viewAction() {

    $filters = array(
    'page'=>array('HtmlEntities','StringTrim'),
    'rows'=>array('HtmlEntities','StringTrim'),
    'sidx'=>array('HtmlEntities','StringTrim'),
    'sord'=>array('HtmlEntities','StringTrim'));

    $validators = array(
    'page'=>array('NotEmpty','Int'),
    'rows'=>array('NotEmpty','Int'),
    'sord'=>array('NotEmpty'));

    $input = new Zend_Filter_Input($filters,$validators);
    $input->setData($this->getRequest()->getParams());
    if($this->getRequest()){
        if($input->isValid()){

            $this->response->page = $input->page;

            $input->rows);
            echo $this->getRooms('jqgrid', $input->page, $input->rows);
        }
    }



}


public function getRooms($switch, $page, $rows){
    $q = Doctrine_Query::create()->select("r.id,r.room_number,t.name,r.pic_url, r.price, r.facilities")
    ->from("Hotel_Model_Room r")
    ->leftJoin("r.RoomType t");

    $pager = new Doctrine_Pager($q,$page, $rows);
    $result = $pager->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
    $totalpages = $pager->getLastPage();
    $totalrecord = Doctrine_Core::getTable("Hotel_Model_Room")->count();

    switch ($switch){
        case 'array':
            return $result;
            break;
        case 'jqgrid' :
            return $this->formatJqgridRoom($result, $page,$totalpages, $totalrecord);
            break;
    }
}

public function formatJqgridRoom($resultset, $page='1', $totalpages, $count){

    $rows= array();

    $response->page = $page;
    $response->total = $totalpages;
    $response->records = $count;

    foreach ($resultset as $key => $value){
        $response->rows[$key]['id'] = $value['id'] ;
        $response->rows[$key]['cell'] = array($value['id'],     $value['room_number'],$value['RoomType']['name'], $value['pic_url'], $value['price'],$value['facilities']) ;
    }


        return json_encode($response);

}

Я использую тему jquery ui redmond, я убедился, что jqGridиспользует его, когда css include закомментирован, сетка больше не синяя. Я также пытался ссылаться на сам css, используя опцию imagepath, и это не имело никакого значения.есть структура папок css

\css
  \redmond
    \images
    jquery-ui-1.8.5.custom.css
 ui.jqgrid.css
 layout.css

Другая проблема заключается в том, что я не могу найти, откуда выбираются строчные шрифты. Здесь они слишком большие. Я думаю, что я скачал их прямо с сайта jqueryui, так чтосейчас я немного запутался. Очевидно, что-то я делаю неправильно, и до сих пор я не могу его найти. Так что я немного запутался в этом.

спасибо за прочтение.

1 Ответ

0 голосов
/ 17 октября 2010

Исправлено. Я забыл, что мне нужно было вставить определение пейджера

$("#roomgrid").jqGrid('navGrid','#paged', {view: true,del:true}); 

в запрос

$(function(){})

, так как вы можете определить функцию navGrid вместо него.причина, почему это не показывало. спасибо.Я надеюсь, что это помогло кому-то

...