我有一個MVC應用程序,我需要能夠在視圖中顯示各種記錄。爲此,我走了使用內置的Webgrid控件的路線。我遇到的問題是從數據庫返回的Datatable中獲取數據,並將其轉換爲網格的IEnumerable。我碰到一個方法來到SO將其轉換爲一個類型列表動態的這似乎工作不夠好,但遇到的問題顯示的數據超過約6列時:.NET MVC Webgrid與DataTable源碼
public static dynamic serializeToDynamic(DataTable dt)
{
var result = new List<dynamic>();
foreach (System.Data.DataRow row in dt.Rows)
{
var obj = (IDictionary<string, object>)new System.Dynamic.ExpandoObject();
foreach (System.Data.DataColumn col in dt.Columns)
{
obj.Add(col.ColumnName, row[col.ColumnName]);
}
result.Add(obj);
}
return result;
}
我有一個需要網格顯示28列,使用這種方法非常緩慢,頁面加載時間接近一分鐘。我沒有找到任何替代方法,所以我繼續爲這個信息做了一個模型,並將DataTable綁定到這個模型上,這證明在大約2秒內加載速度要快得多。我寧願不必使用強類型模型來顯示這些數據,我的問題是有沒有其他方法來轉換DataTable以使用webgrid?
這是http://stackoverflow.com/questions/17322239/asp-net-mvc-3的副本-webgrid-bound-to-listdynamic-is-extremelyly-slow,我已經回答了。 –