2012-02-24 8 views
0

複雑な検索を可能にするために、 "multipleSearch = true"と "multipleGroup = true"のjqGridがあります。jqGrid複雑な検索ダイアログでDatePickerが初期化されていません

私は列に「stype」を設定しています(私の場合、「日付」、「テキスト」、「整数」および「通貨」を含みます)。

DatePickerプラグインとオートコンプリートプラグインの "date"と "text"カラムの "dataInit"関数も用意しました。

検索ダイアログを開くと、オートコンプリート "dataInit"関数が呼び出されますが、DatePicker "dataInit"関数は呼び出されません。

これは、新しいフィルタが作成されたときに "dataInit"関数がトリガされ、最初の列の "stype"に基づいているためです。

(これは、私は、ユーザーが検索ダイアログのドロップダウンリストから列を選択したときにトリガーされる疑う必要があります。)

ユーザーが「日付」フィールドを検索したい日付ピッカーを表示する方法はあります他のフィールド "stypes"に対して無効にしますか?

私は、以下の関連するコードスニペット含めました:

var DatePickerCfg = { id: 'DatePicker',dateFormat: 'dd/mm/yy',minDate: new Date(1990,0,1),maxDate: new Date(2099,12,31),showOn: 'focus' }; 
var AutoCompleteCfg = { id: 'AutoComplete',source: '' }; 



var formatoptions = {}; 
var searchoptions = {}; 


else if (Field['Type'] == '[datetime]') 
{ 
stype = 'date'; 
formatoptions = {srcformat: 'Y-m-dTH:i:s', newformat: 'd/m/Y g:i:s A'}; 
searchoptions = {sopt: ['eq','ne','lt','le','gt','ge'], dataInit: function(el) {setTimeout(function() {jQuery(el).datepicker(DatePickerCfg);}, 200);}}; 
} 
else {searchoptions = {sopt: ['eq','ne','lt','le','gt','ge','bw','bn','ew','en','cn','nc'], dataInit:function(el) {setTimeout(function() {jQuery(el).autocomplete(AutoCompleteCfg);},200);}};} 

colModel.push({name:Field['Field'], index:Field['Field'], align:Field['Align'], sortable:true, stype:stype, formatter:stype, formatoptions:formatoptions, searchoptions:searchoptions}); 
+0

Trirandのウェブサイト上のさまざまなC#とVBの例で、このコードが有効になっていることに気付きました...彼らの専有コードを使用しているので、サーバー側のライブラリ。 は、以下のリンクを参照してください。彼らは、明示的にDataPickerを使用するために、検索ダイアログを設定し、その「SetUpSearchDialogMultipleGrid」機能では http://www.trirand.net/a...id/searchdialogmultiple を、そのすべてのC#とVBで彼らが実際に何をしているのかを詳細に記述した実際のコードはありません。 – Rat

答えて

0

を私は検索ダイアログを使用していたが、インライン編集を使用した場合にも、同様の問題を持っていませんでした。問題は、DatePickerが動作するDOM要素を知る必要があることです。 dataInitは早期に起動します。私はそれがドキュメントの状態が代替として使用できるsetTimeout関数を使用している理由だと思います - それはうまくいきません。

私は、次の手順を実行して、これを解決:

colModel:[ {classes:'applyDatePicker',edittype:"checkbox" 

を行がエディットモードに入ると、コールバック関数が

function onEditRow(rowId) { 
    var dp = jQuery('.applyDatePicker>input[type="text"]'); 
    jQuery(dp).each(function() { 
     jQuery(this).bind('click', function() { 
      jQuery(this).datepicker(); 
      jQuery(this).focus(); 
     }); 
    }); 
} 

たぶん、あなたは同様のアプローチを使用する代わりに、それを適用することができますがありafterShowSearchコールバック関数?

0

これは私のせいでした...私は自分の日付列のstypeを "text"の代わりに "date"に設定しました。 stypeは、データのタイプではなく検索ダイアログの入力のタイプを指します。 (私はソースコードをトローすることでこれを発見しました)

関連する問題