2012-01-18 45 views
0

我有一個帶有工具欄搜索啓用的JqGrid。我的一列是日期時間列,搜索字段是jQuery日期選擇器。日期選擇器的問題是你不能有一個空值,但是由於這個字段是一個過濾器,它可以是空的。所以id'like要做的是在日期選擇器旁邊添加一個小按鈕,以清除該字段。 有沒有辦法做到這一點,或能夠從客戶端清除日期選擇器。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'(和日期選擇器的'MM, yy')看起來有點奇怪,因爲搜索將按完整日期完成,但只顯示嘴和年份。可能所有的工作都可以正確地處理你的數據,可能不會。

我創建了the demo來演示使用datepicker進行搜索。在創建演示期間,我使用了'j, F, Y'格式(日期選擇器格式爲'd, MM, yy'),並在內部使用jqGrid使用的parseDate方法中發現了兩個錯誤。

第一個問題是在the lines其中date[k]的值將被正確計算,但未分配到tsp.m。應在0​​陳述中插入分配tsp.m = date[k];。所以'F'和'M'格式在jqGrid的當前代碼中都不正確。因爲你使用'F'格式,所以對你來說可能很重要。

接下來的問題是,一天中的'j'格式將以錯誤的方式處理。在tsp.j將被正確地分配的時間,但tsp.d,這將在the line可以使用的解析,將不修改並保持等於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

我會在稍後報告bug和我的修正。

+0

嗨奧列格,感謝您的回答。對於日期選擇器格式,我已經從這個[post](http://stackoverflow.com/questions/2208480/jquery-date-picker-to-show-month-year-only)中獲得靈感。 – LotuX

+0

@LotuX:不客氣!我沒有說這是錯誤的。最大的問題是輸入數據**必須**有1個日期。如果您的日期不是1,那麼用戶將看不到任何區別,搜索也將失敗。在應用錯誤修復後,您的問題現在是否已解決? – Oleg

+0

事實上,對於使用datePicker進行搜索,我所做的是從datepicker中檢索月份和年份,並在以整個月份爲間隔創建選擇查詢之後,此工作正常。我不得不承認,我不知道datepicker可以是空的,因爲我不知道我的datpicker中有什麼強制值。 – LotuX

相關問題