web-dev-qa-db-ja.com

dataIndex Extjs4を使用して列インデックスを見つける方法

ExtJS 3では、次のコードを使用しました。

grid.getColumnModel().findColumnIndex("Tasks")

APIドキュメントで見つけようとしましたが、うまくいきませんでした...列のdataIndexまたはその列のヘッダー名でグリッドの列インデックスを見つけることができないのはなぜですか。

11
Hmxa Mughal

コンポーネントクエリを使用できます。

var fname = grid.down('[dataIndex=firstname]');

それを解決するのにしばらく時間がかかりました-ドキュメントに例がないようです。 ;-)

31
Murrah

grid.columns配列を反復処理し、各列のdataIndexプロパティを比較して、インデックスを見つける必要があると思います。

例:

var findColumnIndex = function(columns, dataIndex) {
    var index;
    for (index = 0; index < columns.length; ++index) {
        if (columns[index].dataIndex == dataIndex) { break; }
    }​​​​​​​​
    return index == columns.length ? -1 : index;
}


console.log(findColumnIndex(grid.columns, 'Task'));
console.log(findColumnIndex(grid.columns, 'Something'));
8
Krzysztof
function getColumnIndex(grid, dataIndex) {
    gridDataIndices = Ext.Array.pluck(grid.columns, 'dataIndex');

return Ext.Array.indexOf(gridDataIndices, desireDataIndex);
}

煎茶フォーラムで回答

2
Mohammadreza

dataIndexで列を取得する最も標準的な方法は、次のとおりです。

var column = grid.columnManager.getHeaderByDataIndex('Tasks')

これは列を返すことに注意してください(関数名とは異なります)。これは、ExtJSのグリッドヘッダーが実際にはヘッダーと列の両方のコンテンツであるためです。

Ext.grid.column.Column docs

このクラスは、Ext.grid.Grid内の列の定義を指定します。これには、グリッドヘッダーの構成と、グリッド自体のデータの表示の両方が含まれます。

参照: getHeaderByDataIndex docs

1
Nux
var RowEditor = new Ext.grid.plugin.RowEditing({...});
    RowEditor.editor.form.findField('Task');
0
Macedonian
 var gridColumns = grid.headerCt.getGridColumns();
 for (var i = 0; i < gridColumns.length; i++) {
   if (gridColumns[i].dataIndex == 'yourdataIndex') {
    alert(i);
   }  
 }
0
Srinivas B

コンポーネントクエリは少し遅くなる可能性があり、1つの結果のみを保証するものではありません。グリッドに属する列の配列を反復処理する方が少し高速です。

これは、extフレームワークを使用してトリックを実行する単純な静的util関数です。

 findColumnDataIndex: function(columns, dataIndex) {
   var column = null;
   Ext.Array.each(columns, function(c) {
     if (c.dataIndex === dataIndex) {
       column = c;
       return false;
     }
   }, this);
   return column;
 }

このコードを使用して、グリッドパネルインスタンスから列を取得します

var columns = grid.headerCt.items.items,
0
1-14x0r