2012-01-18 22 views
0

私はツールバーの検索を有効にしてJqGridを持っています。私の列の1つはdatetime列で、検索フィールドはjquery datepickerです。 datepickerの問題は、空の値を持つことはできませんが、このフィールドはフィルタなので空にすることができます。それで、idpのように、フィールドをクリアする日付ピッカーの近くに小さなボタンを追加することです。 これを行う方法、またはクライアント側からdatepickerをクリアする方法はありますか。ここでJqGrid、ツールバーの検索欄にクリアボタンを追加

enter image description here

列のコードは、あなたの助けを事前に

{ name: 'Period', index: 'Period', align: 'center', formatter: 'date', formatoptions: { newformat: 'F, Y' }, width: '70px', search: true, 
         searchoptions: { 
          dataInit: function (el) { 
           $(el).datepicker({ 
            yearRange: "-5:+1", 
            changeMonth: true, 
            changeYear: true, 
            showButtonPanel: true, 
            dateFormat: 'MM, yy', 
            onClose: function (dateText, inst) { 
             var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); 
             var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); 
             $(this).datepicker('disable'); 
             $(this).datepicker('setDate', new Date(year, month, 1)); 
             $(this).datepicker('enable'); 
             $("#jqgCompLine")[0].triggerToolbar(); 
            }, 
            beforeShow: function (input, inst) { 
             if ((datestr = $(this).val()).length > 0) { 
              year = datestr.substring(datestr.length - 4, datestr.length); 
              month = jQuery.inArray(datestr.substring(0, datestr.length - 6), $(this).datepicker('option', 'monthNames')); 
              $(this).datepicker('option', 'defaultDate', new Date(year, month, 1)); 
              $(this).datepicker('setDate', new Date(year, month, 1)); 
             } 
            } 
           }); 
          } 
         }, 

感謝です!

答えて

1

datepickerは空欄に問題ありません。私はそれがあなたのカスタマイズの問題だと思います。

グリッド内の日付の値としてどのデータがあるのか​​わかりません。フォーマットは'F, Y'(そしてdatepickerの場合は'MM, yy')というのは、検索が完全な日付で行われるので少し奇妙なようですが、あなたは口と年だけを表示します。おそらくすべてのデータが正しいと思われます。

私はthe demoを作成して、datepickerで検索する方法を示しました。デモの作成中に私は'j, F, Y'形式(日付ピッカーの場合は'd, MM, yy'形式)を使用し、内部でjqGridによって使用されるparseDateメソッドで2つのバグを発見しました。

最初の問題はthe linesです。date[k]の値は正しく計算されますが、tsp.mには割り当てられません。 ifステートメントには、割り当てtsp.m = date[k];を挿入する必要があります。したがって、 'F'と 'M'の両方の形式は、jqGridの現在のコードで正しく動作しません。あなたは 'F'形式を使用するので、それはあなたのために重要である可能性があります。

次の問題は、その日の'j'形式が間違った方法で処理されることです。 the lineに使用されるtsp.jが正しく割り当てられます日付が、tsp.dの構文解析時には、修正されないであろうと、私は行を追加することをお勧めのコードを修正するには1に等しい滞在

if(tsp.j !== undefined) { tsp.d = tsp.j; } 
forループの後のどこかに

The demoは、jqGrid 4.3.1のjquery.jqGrid.src.jsの修正バージョンjquery.jqGrid.src-parseDate.jsを使用しました。

私はバグと私の修正を後でトリリアに報告します。

+0

こんにちはオレグ、あなたの答えをありがとう。日付ピッカーのフォーマットについては、この[投稿](http://stackoverflow.com/questions/2208480/jquery-date-picker-to-show-month-year-only)に触発されています。 – LotuX

+0

@LotuX:ようこそ!私はそれが間違っているとは言いませんでした。最も大きな問題は、入力データ**には1日が必要であることです。日にちが1でない日付があれば、ユーザーは何の違いも見られず、検索も失敗します。バグ修正を適用した後、問題は解決しましたか? – Oleg

+0

実際、datePickerでの検索では、datepickerから月と年を取得し、月間全体として選択クエリを作成した後、これが問題なく動作します。私は私のdatpickerが価値を強制するものを知らないのであなたのdatepickerが空であることができる方法を知らないことを認めなければならない。 – LotuX

関連する問題