0

合計4つのテーブルを使用して、固定列ヘッダー、列ヘッダー、固定セル、およびセル(左上、右上、左下、右下、下の列をスクロール)を生成するデータグリッドコントロールがあります。垂直方向に、右側のものは水平方向にスクロールします)。一部のテーブル(この場合、固定セル[垂直]と非固定列ヘッダー[水平])間の配置は、スクロール時にテーブルと同期する必要があり、ヘッダー幅は、テーブル保持内の非表示ヘッダーから計算されます。データ。これは、最初にロードされた場合を除いて、非常に大きな(100k以上の行)データセットに対してもうまく機能します。テーブルは(AJAXコールバックを介して)動的に生成され、メソッドを探しています。

TL; DR:DOMまたはJQuery呼び出しによって動的に作成されたテーブルに対してテーブルのコンテンツがレンダリングされた後に関数を呼び出すことができるイベントまたはハックが必要です(できれば、setTimeout呼び出しほど一緒にハッキングされないようにします)。

4

1 に答える 1

0

以下のようにサイズの変更を繰り返しチェックする関数を呼び出すsetTimeoutを作成することでこれを解決する必要がありました(直接関係のない一部のコードは除外されています)。

function Datagrid() {
    var _this = this; setTimeout(function () { _this.CheckAutoColumns(); }, 20);
}
function Datagrid_CheckAutoColumns() {
    if (this != null) {
        var render = false;
        for (var i = 0; i < this.Columns.length; i++) {
            if (this.Columns[i].__LastWidth != this.Columns[i].Container.width()) {
                render = true;
                break;
            }
        }
        if (render == true) { this.Render(); }
        if (this.Disposing === false) { var _this = this; setTimeout(function () { _this.CheckAutoColumns(); }, 20); }
    }
}
Datagrid.prototype.constructor = Datagrid;
Datagrid.prototype.CheckAutoColumns = Datagrid_CheckAutoColumns;
于 2013-01-23T13:53:52.157 に答える