2012-04-26 9 views
0

機能が基本グリッドの選択された行を含むポップアップウィンドウが存在することである:次のように基本グリッドはcheckcolumnが含ま:チェックボックスがオンまたはオフされたときに誘発されるチェックを外しcheckcolumn

{ 
     xtype: 'checkcolumn', 
     text: 'Select', 
     dataIndex: 'active', 
     itemId: 'checkcolumnId', 
     width: 55 
    } 

コントローラー:

'#checkcolumnId' : { 
     checkchange : function(column, recordIndex, checked) { 
      if(checked){ 
      var rec = statusStore.getAt(recordIndex); 
      reassignStore.add(rec); 
      }else if(statusStore.getAt(recordIndex)!=null){ 
      var indexNumber = reassignStore.findExact('taskId', statusStore.getAt(recordIndex).data.taskId, 0); 
      reassignStore.removeAt(indexNumber); 
      } 
      return false; 
     } 
    } 

再割り当てストアは、ベースグリッドの選択(チェック済み)レコードを表示するポップアップ用のストアです。

ベースグリッドの行のチェックボックスをオンにすると、そのレコードが再割り当てグリッドに表示されることがわかりますが、チェックボックス(checkcolumnのベースグリッド)を再度クリックすると問題はチェックされません。チェックを外す操作を実行します。つまり、上のチェックチェンジ方法の偽の状態になります。

この機能はext-4.0.7-gpl/examples/grid/row-editing.htmlで利用可能です。 クロムデバッガの使用私は、ベースグリッドの行のチェックを外そうとすると、レンダラメソッドを呼び出さないことがわかりました。 CheckColumn.jsは、チェックされた列のCSSを変更することを担当します。

CheckColumn.js

renderer : function(value){ 
     var cssPrefix = Ext.baseCSSPrefix, cls = [cssPrefix + 'grid-checkheader']; 
     if (value) { 
      cls.push(cssPrefix + 'grid-checkheader-checked'); 
     } 
     return '<div class="' + cls.join(' ') + '">&#160;</div>'; 
    } 

私はreassignStore.add(REC)をコメントする場合は、またはreassignStore.removeAt(indexNumber); checkChangeメソッド私は適切にチェックを外すことができます(つまり、CSSが適用されているため、チェックボックスは視覚的に見ることができます)

これはバグですか?チェックしないとCSSが適用されないのはなぜですか?

答えて

1

チェックボックスを含むこの列のデータ型は何ですか?ブール値以外の場合は、このような問題がある可能性があります。

checked = !record.get(dataIndex); 

record.get(dataIndex) == falseのであれば、確認することは真である必要がありますが、例えば、確認record.get(dataIndex) == "false"は、まだ偽のようになります。。CheckColumn.jsに、のような文がありますのでその場合、レンダラーは決して呼び出されません。

関連する問題