ビューで可変数の列を返すことができるデータ テーブルを表示する必要があるため、この投稿への回答で説明されているように、Mvc 3 WebGrid を List<dynamic> に バインドしています。
正常に動作しますが、信じられないほど遅いです。「信じられないほど遅い」とは、11 列の 15 レコードのセットを表示するのに 13 秒かかることを意味します。これをスピードアップする方法はありますか?Pager を削除しようとしましたが、効果がありません。
Ado.Net データ テーブルから List<dynamic> を作成するコードは次のようになります。非常に高速に実行されます。ここでは問題ありません。
var MyList = new List<dynamic>();
foreach (DataRow row in MyTable.Rows)
{
var expando = (IDictionary<string, object>)new ExpandoObject();
foreach (string column in columnNames)
{
expando.Add(column, row[column]);
}
MyList.Add(expando);
}
ビューで問題が発生します。以下のコードは、11 列の 15 レコードのセットをレンダリングするのに約 13 秒かかります! データベースへの移動とデータ テーブルの List<dynamic> への変換には 1 秒もかかりません。以下のコードは、レンダリングだけで 13 秒かかります。私は何を間違っていますか?それとも、List<dynamic> を使用して間違ったツリーを鳴らしているだけですか?
var grid = new WebGrid(canPage: true, rowsPerPage: Model.PageSize, canSort: false);
grid.Bind(Model.MyList, rowCount: (int)Model.RowCount, autoSortAndPage: false);
grid.Pager(WebGridPagerModes.All);
@grid.GetHtml(tableStyle: "webgrid",
rowStyle: "webgrid-row",
alternatingRowStyle: "webgrid-alternating-row",
htmlAttributes: new { id = "tblSearchResults" },
firstText: "<<First",
lastText: "Last>>", mode: WebGridPagerModes.All
)