0

列の1つに「UpdateTime」とあるjqgridが1つあります。私はそれにフィルターを適用し、以下のコードを使用して DateRangePicker ポップアップを完全に取得しています。

{name:'updateTime',index:'updateTime',width:90,hidden:false,search:true,align:'center',stype:"text", 
    searchoptions:{dataInit:function(el){
        $(el).daterangepicker({ 
        dateFormat:'mm/dd/yy', 
        beforeShow: function(input, inst) {
            $.datepicker._pos = $.datepicker._findPos(input); 
            $.datepicker._pos[0] = center; 
            $.datepicker._pos[1] = center; 
        }, 
       onClose: function(event) {
         jQuery("#myGrid").trigger("reloadGrid");
       }                                                 
     });
    } 
   }
  },

私は持っている

$("#myGrid").jqGrid('filterToolbar', {autoSearch:true,searchOnEnter:true});

問題は、フィルターのテキストボックスに値が入力されている日付を選択すると、コントロールが Java コードに届かないことです。代わりに、フィルター テキスト ボックスをもう一度選択して、Enter キーを押す必要があります。次回、daterangepickerポップアップから日付を選択すると、Javaコードに制御が移りますが、最新の値にはなりません。最新の値を取得するには、毎回エンターを押さなければなりません。

それで、日付の選択でコントローラーを呼び出す方法はありますか、または日付の選択後にフィルターテキストボックスに自動フォーカスして、毎回Enterキーを押すことができますか. Enterキーを押しても問題ありません。

以下のコードでも試しました

onSelect: function (dateText, inst) {
    $("#myGrid")[0].trigger("reloadGrid");
}
4

1 に答える 1

0

現在、この問題を解決する必要がありましたが、次のことがわかりました。

daterangepicker には onSelect、onClose イベント ハンドラはありません。また、リロードする前に jqGrid フィルターを手動で更新する必要があります。私のために働く私の解決策(ハックのように見える場合はevet)はこれです。

    grid = jQuery("<table>").attr('id', myId+"_grid");
    var datePick = function(elem)
    {
       jQuery(elem).daterangepicker({
           dateFormat:"MM/DD/YYYY"
       });
       jQuery(elem).on('apply.daterangepicker', function(ev, picker) {
            var d = picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY');
            var f = {groupOp:"AND",rules:[]};
            f.rules.push({field:"time_submit",op:"eq",data:d});
            grid[0].p.search = true;
            jQuery.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
            grid.trigger("reloadGrid",[{page:1,current:true}]);
        });
    }

注: フィールド stype は「テキスト」であり、入力文字列を「MM/DD/YYYY - MM/DD/YYYY」の形式で解析する必要があります。ソース: daterangepicker のイベント

于 2015-03-04T10:24:50.687 に答える