11

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

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

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

4

7 に答える 7

32

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

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

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

于 2013-03-03T02:06:06.907 に答える
9

配列を反復処理し、各列のプロパティを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'));
于 2012-12-06T12:14:54.963 に答える
2
function getColumnIndex(grid, dataIndex) {
    gridDataIndices = Ext.Array.pluck(grid.columns, 'dataIndex');

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

煎茶フォーラムで回答

于 2015-10-13T09:42:59.323 に答える
0
 var gridColumns = grid.headerCt.getGridColumns();
 for (var i = 0; i < gridColumns.length; i++) {
   if (gridColumns[i].dataIndex == 'yourdataIndex') {
    alert(i);
   }  
 }
于 2012-12-06T13:04:25.303 に答える
0
var RowEditor = new Ext.grid.plugin.RowEditing({...});
    RowEditor.editor.form.findField('Task');
于 2015-10-05T14:29:59.253 に答える
0

コンポーネント クエリは少し遅くなる可能性があり、結果が 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,

于 2015-03-31T19:54:36.100 に答える