1

機能は、ベース グリッドの選択された行を含むポップアップ ウィンドウがあることです。ベース グリッドには、次のように 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;
        }
     }

reassign store は、ベースグリッドの選択(チェック)されたレコードを表示するポップアップストアです。

ベース グリッドの行のチェックボックスをオンにすると、そのレコードが再割り当てグリッドに表示されることがわかりますが、問題はチェックボックス (ベース グリッドのチェック列) をもう一度クリックすると、オフの操作を実行しますが、オフに表示されないことです。上記の checkchange メソッドの false 状態になります。

この機能は次の場所にあります。チェックされた列の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が適用されていないのはなぜですか?

4

1 に答える 1

1

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

checked = !record.get(dataIndex);

したがってrecord.get(dataIndex) == false、checked は true である必要がありますが、たとえば、record.get(dataIndex) == "false"checked は false のままです。その場合、レンダラーは呼び出されません。

于 2012-06-26T00:44:28.387 に答える