2010-12-18 21 views
0

私は自分のカスタムページのためにviewmodelクラスを作成しました。私はDataTable(ORMツール)を返すストアドプロシージャを持っています。私はこの手続きを変更することはできません。しかし、私は表示リストのストアドプロシージャからレコードを表示したいと思います。リストビューのデータテーブルから値を表示するにはどうすればよいですか?私はどんな助けにも感謝します。ViewModel:リストビューでデータテーブルの値を表示する方法

おかげで、

public class CreateViewModel 
{ 
     [Required] 
     public DateTime StartDate {get; set;} 
     [Required] 
     [StringLength(250, ErrorMessage = "Details must be less than 250 characters")]  
     public string Details { get; set; } 
} 

答えて

0

それを行うための主な方法は、ビューモデルインスタンスにデータテーブルの各行から列の値を読み出すことになります。これは通常のDataTableアクセス方法です。これは、コントローラアクションから呼び出されるサービスレイヤーで実行する必要があります。

ストアドプロシージャは変更できませんが、DataTableに関連付けられていない場合は、SqlReaderを返すためにSqlCommandを実行すると問題が発生します。次に、次のコードでデータにアクセスできます。

var list = new List<MyViewData>(); 
while(reader.Read()) 
{ 
var model = new MyViewData(); 
model.Property = reader.GetString(reader.GetOrdinal("ColumnName")); 
// .. etc.. 
list.Add(model); 
} 

return list; 

これは、ストアドプロシージャから返されたレコードセットにアクセスします。

ビューのモデルプロパティをIEnumerableとして設定すると、ビュー内のモデルに対してforeachを使用して各インスタンスにアクセスできます。

これが役に立ちます。

+0

ありがとうございました。これは私のために働いた。 – nav100

+0

問題ありません。お役に立てて嬉しいです :-) – WestDiscGolf

関連する問題