ASP.NET MVCでDataTableを使用する。
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ASP.NET MVCの利用方法]]
* 目次 [#s45f73d0]
#contents
*概要 [#f89c6a73]
[[ASP.NET MVC]]で[[Entity Framework]]をキャンセルした場合...
[[ASP.NET MVC]] + DataTableが必要なため、本項にコレを纏め...
*通常の処理 [#wfdbf816]
**通常通りViewに持って行って処理可能。 [#b63d57a5]
-c# - Displaying standard DataTables in MVC - Stack Overf...
http://stackoverflow.com/questions/2243898/displaying-sta...
--[[ASP.NET MVC]]でDataTableの併用は問題ない。
There is nothing about MVC that prevents you from using ...
--以下は、
---「[[ASP.NET MVC]]でDataTableを使用するのがベストプラク...
---「Controllerでデータを作成するのがベストプラクティスで...
>>お間違いなきよう。
Now, I'm violating a whole lot of principles and "best-p...
**ただし、双方向バインディング等は不可能 [#m91239fa]
単一レコードの処理を行う場合等はPOCOのViewModelを作成する。
*Grid系の処理 [#c93ef3ee]
**foreach [#z5b569b0]
foreach で処理可能。
**[[WebGrid>ASP.NET MVCのWebGrid]] [#v5946716]
[[WebGrid>ASP.NET MVCのWebGrid]]のコンストラクタの第一引...
sourceは、IEnumerableをサポートする必要があるので、~
DataTable使用時は、型の変換が必要がになるもよう。
***IEnumerable<DataRow> ではダメなケースがある。[#r2be74e6]
以下でIEnumerable<DataRow>に変換可能。
var result = dt.AsEnumerable();
しかし、このresultは、
@{
・・・
var grid = new WebGrid(erc);
・・・
}
・・・
@grid.GetHtml()
・・・
として使用できない。
理由は、
DataRowのpublic propertyが、
-RowError property
-HasError property
であるためのもよう。
詳しくは、下記を参照のこと。
-DataTableExtensions.AsEnumerable メソッド (DataTable) (S...
https://msdn.microsoft.com/ja-jp/library/system.data.data...
-WebGrid and DataTable | The ASP.NET Forums~
https://forums.asp.net/t/1673391.aspx?WebGrid%20and%20Dat...
この場合、
-[[以下のように、DataTableを、List<dynamic> に変換するか...
-grid.Column()メソッドで以下のように、formatを明示する、
grid.Column("Name", format: (item) => item.Value["Name"]...
--なお、ここでHTMLヘルパーを使用するには、以下のように処...
---asp.net mvc 3 - how to format html helpers in webgrid ...
http://stackoverflow.com/questions/15158183/how-to-format...
format: item => Html.TextBox((item) => item.Value["Name"...
と、イイ感じに処理できるもよう。
***List<dynamic> に変換する。[#qeaf6181]
List<dynamic>に、(IDictionary<string, object>) ExpandoObj...
var result = new List<dynamic>();
foreach (DataRow row in table.Rows)
{
var obj = (IDictionary<string, object>)new ExpandoObje...
foreach (DataColumn col in table.Columns)
{
obj.Add(col.ColumnName, row[col.ColumnName]);
}
result.Add(obj);
}
**ポストバック的な動作がある場合 [#k5d5c756]
***Sessionに格納しておく。 [#j8310e04]
削除しないとメモリを食う。
***Hidennに格納しておく。 [#mbcc3a3c]
Hiddenにバイナリ・シリアライズしたDataTableのBase64エンコ...
***都度、DBから取得する。 [#zb981cbd]
オーバーヘッドがある。
*参考 [#obc5c62b]
-MVC Web Grid using Dynamic Data Table~
http://www.c-sharpcorner.com/code/2910/mvc-web-grid-using...
**Stack Overflow [#y8172bbe]
-c# - Displaying standard DataTables in MVC~
http://stackoverflow.com/questions/2243898/displaying-sta...
-asp.net mvc 3 - Populate MVC Webgrid from DataTable~
http://stackoverflow.com/questions/6168548/populate-mvc-w...
-asp.net mvc 3 webgrid bound to List<dynamic> is exceedin...
http://stackoverflow.com/questions/17322239/asp-net-mvc-3...
----
Tags: [[:.NET開発]], [[:ASP.NET]], [[:ASP.NET MVC]], [[:A...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ASP.NET MVCの利用方法]]
* 目次 [#s45f73d0]
#contents
*概要 [#f89c6a73]
[[ASP.NET MVC]]で[[Entity Framework]]をキャンセルした場合...
[[ASP.NET MVC]] + DataTableが必要なため、本項にコレを纏め...
*通常の処理 [#wfdbf816]
**通常通りViewに持って行って処理可能。 [#b63d57a5]
-c# - Displaying standard DataTables in MVC - Stack Overf...
http://stackoverflow.com/questions/2243898/displaying-sta...
--[[ASP.NET MVC]]でDataTableの併用は問題ない。
There is nothing about MVC that prevents you from using ...
--以下は、
---「[[ASP.NET MVC]]でDataTableを使用するのがベストプラク...
---「Controllerでデータを作成するのがベストプラクティスで...
>>お間違いなきよう。
Now, I'm violating a whole lot of principles and "best-p...
**ただし、双方向バインディング等は不可能 [#m91239fa]
単一レコードの処理を行う場合等はPOCOのViewModelを作成する。
*Grid系の処理 [#c93ef3ee]
**foreach [#z5b569b0]
foreach で処理可能。
**[[WebGrid>ASP.NET MVCのWebGrid]] [#v5946716]
[[WebGrid>ASP.NET MVCのWebGrid]]のコンストラクタの第一引...
sourceは、IEnumerableをサポートする必要があるので、~
DataTable使用時は、型の変換が必要がになるもよう。
***IEnumerable<DataRow> ではダメなケースがある。[#r2be74e6]
以下でIEnumerable<DataRow>に変換可能。
var result = dt.AsEnumerable();
しかし、このresultは、
@{
・・・
var grid = new WebGrid(erc);
・・・
}
・・・
@grid.GetHtml()
・・・
として使用できない。
理由は、
DataRowのpublic propertyが、
-RowError property
-HasError property
であるためのもよう。
詳しくは、下記を参照のこと。
-DataTableExtensions.AsEnumerable メソッド (DataTable) (S...
https://msdn.microsoft.com/ja-jp/library/system.data.data...
-WebGrid and DataTable | The ASP.NET Forums~
https://forums.asp.net/t/1673391.aspx?WebGrid%20and%20Dat...
この場合、
-[[以下のように、DataTableを、List<dynamic> に変換するか...
-grid.Column()メソッドで以下のように、formatを明示する、
grid.Column("Name", format: (item) => item.Value["Name"]...
--なお、ここでHTMLヘルパーを使用するには、以下のように処...
---asp.net mvc 3 - how to format html helpers in webgrid ...
http://stackoverflow.com/questions/15158183/how-to-format...
format: item => Html.TextBox((item) => item.Value["Name"...
と、イイ感じに処理できるもよう。
***List<dynamic> に変換する。[#qeaf6181]
List<dynamic>に、(IDictionary<string, object>) ExpandoObj...
var result = new List<dynamic>();
foreach (DataRow row in table.Rows)
{
var obj = (IDictionary<string, object>)new ExpandoObje...
foreach (DataColumn col in table.Columns)
{
obj.Add(col.ColumnName, row[col.ColumnName]);
}
result.Add(obj);
}
**ポストバック的な動作がある場合 [#k5d5c756]
***Sessionに格納しておく。 [#j8310e04]
削除しないとメモリを食う。
***Hidennに格納しておく。 [#mbcc3a3c]
Hiddenにバイナリ・シリアライズしたDataTableのBase64エンコ...
***都度、DBから取得する。 [#zb981cbd]
オーバーヘッドがある。
*参考 [#obc5c62b]
-MVC Web Grid using Dynamic Data Table~
http://www.c-sharpcorner.com/code/2910/mvc-web-grid-using...
**Stack Overflow [#y8172bbe]
-c# - Displaying standard DataTables in MVC~
http://stackoverflow.com/questions/2243898/displaying-sta...
-asp.net mvc 3 - Populate MVC Webgrid from DataTable~
http://stackoverflow.com/questions/6168548/populate-mvc-w...
-asp.net mvc 3 webgrid bound to List<dynamic> is exceedin...
http://stackoverflow.com/questions/17322239/asp-net-mvc-3...
----
Tags: [[:.NET開発]], [[:ASP.NET]], [[:ASP.NET MVC]], [[:A...
ページ名: