2011-03-29 5 views
0

몇 가지 방법을 시도한 후에 jquery.jqgrid.js와 함께 검색 막대를 추가하려고합니다.이 방법은 나에게 오류를주지 않았지만 둘 다하지 않습니다 내 검색 도구 모음 표시, 누군가가 한 번 봐도 내가 누락 된 경우 볼 수 있습니까 ?? 하나는 메인 오류를 볼 수있는 코드의 형식의 개선 후jqgrid 검색 도구 모음이 jquery.jqgrid.js를 사용하지 않음

jQuery(document).ready(function() { 
    jQuery("#list").jqGrid({ 
     url: '/Home/DynamicGridData/', 
     datatype: 'json', 
     mtype: 'POST', 
     colNames: ['Edit', 'AlertId', 'Policy', 'PolicyRule', 'Alert Status', 
        'Alert Code', 'Message', 'Category'], 
     colModel: [ 
     { name: 'Edit', edittype: 'select', formatter: 'showlink' }, 
     { name: 'AlertId', index: 'AlertId', sortable: true, sorttype: 'int', 
     autoFit: true, align: 'left', hidden: true }, 
     { name: 'Policy', index: 'Policy.Name', sortable: true, sorttype: 'text', 
     autoFit: true, searchoptions: { sopt: ['eq', 'ne', 'cn'] }, 
     align: 'left' }, 
     { name: 'Policy Rule', index: 'PolicyRule', sortable: true, 
     sorttype: 'text', autoFit: true, sorttype: 'text', 
     searchoptions: { sopt: ['eq', 'ne', 'cn'] }, align: 'left' }, 
     { name: 'Alert Status', index: 'AlertStatus.status', sortable: true, 
     sorttype: 'text', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, 
     autoFit: true, align: 'left' }, 
     { name: 'Alert Code', index: 'Code', sortable: true, sorttype: 'text', 
     align: 'left', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, 
     autoFit: true }, 
     { name: 'Message', index: 'Message', sortable: true, sorttype: 'text', 
     align: 'left', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, 
     autoFit: true }, 
     { name: 'Category', index: 'Category.name', sortable: true, 
     sorttype: 'text', align: 'left', autoFit: true, 
     searchoptions: { sopt: ['eq', 'ne', 'cn'] }}], 
     pager: $("#pager"), 
     rowNum: 10, 
     rowList: [10, 60, 100], 
     scroll: true, 
     sortname: 'AlertId', 
     sortorder: 'asc', 
     viewrecords: true, 
     imgpath: '/scripts/themes/basic/images', 
     caption: 'my name', 
     gridComplete: function() { 
      var objRows = $("#list tr"); 
      var objHeader = $("#list.jqgfirstrow td"); 
      if (objRows.length > 1) { 
       var objFirstRowColumns = $(objRows[1]).children("td"); 
       for (i = 0; i < objFirstRowColumns.length; i++) { 
        $(objFirstRowColumns[i]).css("width", 
               $(objHeader[i]).css("width")); 
       } 
      } 
     } 
    }); 
}); 

$("#list").jqGrid('navGrid','#pager', 
        {edit:true,add:true,del:true,search:true,refresh:true}); 
$("#list").jqGrid('navButtonAdd',"#pager", 
        {caption:"Toggle",title:"Toggle Search Toolbar", 
        buttonicon :'ui-icon-pin-s',   
        onClickButton:function() {     
         $("#list")[0].toggleToolbar() 
        } }); 
$("#list").jqGrid('navButtonAdd',"#pager", 
        { caption: "Clear", title: "Clear Search", 
        buttonicon :'ui-icon-refresh', 
        onClickButton:function(){     
         $("#list")[0].clearToolbar() 
        } }); 
jQuery("#list").jqGrid('filterToolbar'); 

답변

0

: 당신은 jQuery(document).ready의 외부 navGrid, navButtonAddfilterToolbar를 호출합니다. jQuery(document).ready 내부로 이동하면 검색 도구 모음이 즉시 표시됩니다 (here 참조).

당신의 코드는 다른 작은 문제가있다 : gridComplete 내부

  1. 변수 i은 로컬 및 글로벌되지 변수로 선언되어야한다.
  2. 더 이상 사용되지 않는 매개 변수 을 제거해야합니다.
  3. colModel 매개 변수의 많은 옵션을 sortable:true, sorttype: 'text', align: 'left' 등과 같은 기본값으로 사용합니다. 코드 만 길어지고, 천천히 그리고 더 읽기 어렵게 만듭니다. colModel 매개 변수를 설명하는 the part of documentation을보고 기본 속성을 제거하는 것이 좋습니다.
  4. 사용하시는 sorttype 속성은 datatype: 'json'이 아닌 경우 loadonce:true이 없으면 작동하지 않습니다. 따라서 서버 기반 정렬, 페이징 및 필터링/검색 중 하나를 결정해야하며 sorttype 속성에서 제거하는 것이 더 좋거나 loadonce:true을 사용해야하지만 서버에 대한 첫 번째 요청에서 그리드 포함을 한 번에로드해야합니다.
  5. autoFit 열 속성이 없습니다.
관련 문제