2016-11-09 10 views
0

Попытка создать демоверсию для отображения динамического выпадающего списка для источника Field, клиента, но данные возвращают значение null.При обновлении с jqrid4.6 до 4.13.5 сталкиваясь с проблемой при создании динамического раскрывающегося списка с уникальными значениями. Layoutdowndowndown нарушается

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"> 
 
var columnNameArrayForColumnFilter=["source","name"]; 
 
    $(function() { 
 
     "use strict"; 
 
     var mydata = [ 
 
       {id:"1", invdate:"720:0:0",name:"test", source:"note1", amount:"200.00",tax:"10.00",total:"210.00"}, 
 
       {id:"2", invdate:"34:09:0",name:"test2", source:"note2", amount:"300.00",tax:"20.00",total:"320.00"}, 
 
       {id:"3", invdate:"0:0:0",name:"test3", source:"note1", amount:"400.00",tax:"30.00",total:"430.00"}, 
 
       {id:"4", invdate:"90:08:8",name:"test4", source:"note2", amount:"200.00",tax:"10.00",total:"210.00"}, 
 
       {id:"5", invdate:"09:34:2",name:"test4", source:"note3", amount:"300.00",tax:"20.00",total:"320.00"}, 
 
       {id:"6", invdate:"80:12:02",name:"test6", source:"note3", amount:"400.00",tax:"30.00",total:"430.00"}, 
 
       {id:"7", invdate:"80:12:01",name:"test7", source:"note2", amount:"200.00",tax:"10.00",total:"210.00"}, 
 
       {id:"8", invdate:"112:23:6",name:"test2", source:"note2", amount:"300.00",tax:"20.00",total:"320.00"}, 
 
       {id:"9", invdate:"80:12:1 ",name:"test9", source:"note1", amount:"400.00",tax:"30.00",total:"430.00"}, 
 
       {id:"10",invdate:"112:34:2",name:"test1",source:"note3",amount:"500.00",tax:"30.00",total:"530.00"}, 
 
       {id:"11",invdate:"114:23:2",name:"test11",source:"note2",amount:"500.00",tax:"30.00",total:"530.00"}, 
 
\t \t \t \t {id:"13",invdate:"80:12:4 ",name:"test11",source:"note2",amount:"500.00",tax:"30.00",total:"530.00"}, 
 
\t \t \t \t {id:"14",invdate:"0:1:0",name:"test11",source:"note12",amount:"500.00",tax:"30.00",total:"530.00"} , 
 
\t \t \t \t {id:"15",invdate:"80:12:3",name:"test11",source:"note12",amount:"500.00",tax:"30.00",total:"530.00"} 
 
      ]; 
 
      
 
    
 
     $("#grid").jqGrid({ 
 
      data: mydata, 
 
      colNames:['Inv No','Duration', 'Client', 'Amount','Tax','Total','source'], 
 
       colModel:[ 
 
        {name:'id',index:'id', search:false,width:65, sorttype: 'int'}, 
 
        {name:'invdate',index:'invdate', width:120, align:'center', sorttype:'datetime', datefmt:'H:i:s',searchoptions: { sopt:['inbetween','eq','lt','le','gt','ge'] }}, 
 
        {name:'name',index:'name', width:90,search:true,}, 
 
        {name:'amount',index:'amount', width:70, formatter:'number', align:"right",search:false,}, 
 
        {name:'tax',index:'tax', width:60, formatter:'number', align:"right",search:false,}, 
 
        {name:'total',index:'total', width:60, formatter:'number',align:"right",search:false,}, 
 
        {name:'source',index:'source', width:100, search:true,} 
 
       ], 
 
      pager: true, 
 
      autoencode: true, 
 
      viewrecords: true, 
 
      rowNum: 10, 
 
      rowList: [5, 10, 20, "10000:All" ], 
 
      caption: "Demonstration custom searching operation (Duration Range)", 
 
      customSortOperations: { 
 
       
 
       inbetween: { 
 
        operand: "inbetween",  
 
        text: "in between", 
 
        filter: function (options) { 
 
        } 
 
       } 
 
      } 
 
      
 
     }).jqGrid("filterToolbar", 
 
      {stringResult: true, searchOnEnter: true, searchOperators : true}); 
 
applyColumnFilterOnGrid(columnNameArrayForColumnFilter,'grid'); 
 
    }); 
 

 
function applyColumnFilterOnGrid(columnNameArrayForColumnFilterInGrid) 
 
{ 
 
\t for(var i=0;i<columnNameArrayForColumnFilterInGrid.length;i++) 
 
\t { 
 
\t \t setSearchSelect.call("#grid",columnNameArrayForColumnFilterInGrid[i]); 
 
\t } 
 
} 
 

 

 

 
// this function return unique value for column filter on grid 
 
var getUniqueNames = function(columnName) { 
 

 

 
var data = $('#grid').jqGrid('getGridParam', 'data'); 
 
var uniqueTexts = [], text, textsMap = {}, i; 
 

 
for (i = 0; i < data.length; i++) { 
 

 
       text = data[i][columnName]; 
 

 
       if (text !== undefined && textsMap[text] === undefined) { 
 
        // to test whether the texts is unique we place it in the map. 
 
        textsMap[text] = true; 
 
        uniqueTexts.push(text); 
 
       } 
 
      } 
 
      return uniqueTexts; 
 
} 
 
// this method add All value in column filter values and return value map 
 
var buildSearchSelect = function(uniqueNames) { 
 
     var values=":All"; 
 
     $.each (uniqueNames, function() { 
 
      values += "," + this + ":" + this; 
 
\t \t \t 
 
     }); 
 
     return values; 
 
    }; 
 
// this function is create drop down for column filter functionlity on grid and set values 
 
    var setSearchSelect = function(columnName) { 
 
\t 
 
     $("#grid").jqGrid("setColProp", columnName, 
 
        { 
 
         stype:"select", 
 
         searchoptions: { 
 
          value:buildSearchSelect(getUniqueNames.call("#grid",columnName)), 
 
          sopt:["eq"] 
 
         } 
 
        } 
 
     ); 
 
    };
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/redmond/jquery-ui.css"> 
 
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> 
 
    <!--<link rel="stylesheet" href="../jqGrid/css/ui.jqgrid.css">--> 
 
    <link rel="stylesheet" href="http://www.ok-soft-gmbh.com/jqGrid/OK/ui.jqgrid.css">
<html lang="en"> 
 
<head> 
 
    </head> 
 
<body> 
 
<div id="outerDiv" style="margin:5px;"> 
 
    <table id="grid"></table> 
 
</div> 
 
</body> 
 
</html>

Когда я пытаюсь обновить с 4,6 до 4.13.5 .. мои существующих динамических выпадающих уникальных значений получить беспокоило.

+0

@ Oleg- пытается создать демо-версию для динамического выпадающего меню для источника колонки, клиент , Моя версия jqgrid - 4.6. когда я пытаюсь перейти на 4.13.5, выпадающее меню не работает – Priya

+0

@ Oleg- getParamgrid возвращает null – Priya

+0

В текущем коде есть некоторые простые ошибки, такие как использование '$ (" grid ")' вместо '$ (" # grid ")' внутри 'getUniqueNames' и' setSearchSelect' и создавая 'filterToolbar' ** перед ** заполнением' searchoptions.value' 'data': вы вызываете' applyColumnFilterOnGrid' ** после ** 'filterToolbar' вместо * * перед ** 'filterToolbar'. В каком 'datatype' есть ваше ** настоящее приложение **? Вы загружаете данные с сервера и используете 'loadonce: true' или используете действительно' datatype: "local" '? – Oleg

ответ

0

текущий код имеет некоторые простые ошибки, как в использовании $("grid") вместо $("#grid") внутри getUniqueNames и setSearchSelect и создания filterToolbar перед заполнением searchoptions.value с data: вы звоните applyColumnFilterOnGrid после filterToolbar вместо перед тем filterToolbar.

Следующая проблема существует в buildSearchSelect, который я изначально опубликовал в the old answer. Вы изменили линию

values += ";" + this + ":" + this; 

в

values += "," + this + ":" + this; 

что неправильно. В качестве разделителя следует использовать ; вместо , (см. the documentation из jqGrid 4.6). Если вы замените "," на ";", тогда проблема будет решена. В общем, вы можете использовать , вместо ; в качестве разделителя в value, но вы должны сообщить jqGrid о том, что при использовании delimiter: "," опции:

var setSearchSelect = function(columnName) { 

    $("#grid").jqGrid("setColProp", columnName, 
       { 
        stype:"select", 
        searchoptions: { 
         delimiter: ",", 
         value:buildSearchSelect(getUniqueNames.call("#grid",columnName)), 
         sopt:["eq"] 
        } 
       } 
    ); 
}; 

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

  • Нет связанных вопросов^_^