1

GroupingView を使用する GridPanel に問題があります。

var grid1 = new Ext.grid.GridPanel({
    store: new Ext.data.GroupingStore({
        fields: [ ]
    }),
    cm: new Ext.grid.ColumnModel([  ]),
    selModel: new Ext.grid.RowSelectionModel({ singleSelect: false }),
    view: new Ext.grid.GroupingView({
        groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "' + BPS.Resource.items + '" : "' + BPS.Resource.item + '"]})'
    })
});

新しいストアと列モデルを設定する reconfigure と呼ぶイベントです。ストアは GroupingStore であり、使用する groupField を設定します。

// define the store
var store1 = new Ext.data.GroupingStore({
    proxy: new Ext.data.HttpProxy({
        url: listConfig.dataURL + '?sort=' + listConfig.defaultSortField + '&dir=' + listConfig.defaultSortDirection,
        method: 'POST'
    }),
    autoLoad: false,
    remoteSort: true,
    remoteGroup: true,
    groupOnSort: false,
    groupField: listConfig.groupingColumn,
    sortInfo: {
        field: listConfig.defaultSortField,
        direction: listConfig.defaultSortDirection
    },
    paramNames: {
        start: 'skip',
        limit: 'take',
        sort: 'sort',
        dir: 'dir'
    },
    reader: new Ext.data.JsonReader()
});

// reconfigure the grid
grid1.reconfigure(store1, new Ext.grid.ColumnModel(listConfig.columnDefinitions));

ただし、これは最初にロードされたときに機能するようです。列にグループ化を設定するか、構成していない場合はグループ化をまったく設定しません。しかし、ユーザーが gridpanel でグループ化をオフにし、構成をロードするために同じコードが実行された後、構成がグループ化されるように変更されません。

グループ化を使用する、または使用しないようにグリッドを再構成するにはどうすればよいですか?

4

2 に答える 2

4

グループストアに問題がありました。レコードのフィールドを変更し、グループ化がフィールドの変更元の列にあった場合、グリッドはレコードを自動的に再グループ化しませんでした。また、新しい行を追加すると、グループ化が正しくなく、追加されたレコードが正しいグループに追加されませんでした。

現在の groupBy フィールドをグローバル var に保持し、更新または afteredit のたびにグリッドからイベントを追加することで、この問題を解決しました。

grid.getView().refresh(); のみを使用する トリックをしませんでした。

もちろん、これはユーザーフレンドリーですか?行のフィールドが変更され、変更されたフィールドの列にグループ化が設定されるたびに、レコードが再グループ化され、ユーザーが変更していた行を見つけるのに問題が生じる可能性があります。

より良い解決策: 編集中のレコードへのフォーカスが失われたときに、現在の groupBy 列を格納した var で groupBy() のみを unGroup してから使用します。ぼかしイベントのSO。

于 2011-06-23T07:22:09.703 に答える
1

GroupingStore の groupchange イベントにリスナーをアタッチし、グループ化フィールドとして選択されたフィールドを記録すると思います。次に、再構成するときに、groupBy() 関数を使用してそのフィールドでグループ化するようストアに指示するか、ungroup() 関数を使用してグループ化を削除します。次に、グリッドのビューの refresh() メソッドを呼び出します。

私はこれをテストしていないので、完全にゴミかもしれないことに注意してください! :-)

于 2011-03-04T15:56:32.720 に答える