2009-03-01 13 views

答えて

5

バインドするためにデータテーブルは必要ありません。リスト/列挙型のようなものが必要です。たとえば、行番号を知っている場合:我々は実行時のみのプロパティ(列からすなわち、データ)を取得するためにDataRowView(というよりもDataRow)を使用する必要が

DataRowView row = dt.DefaultView[1]; // second row 
detailsView1.DataSource = new DataRowView[] {row}; 
detailsView1.DataBind(); 

注意を。

public static DataRowView[] ForBinding(this DataRow row) 
{ 
    foreach (DataRowView rowView in row.Table.DefaultView) 
    { 
     if (ReferenceEquals(rowView.Row, row)) 
     { 
      return new DataRowView[] { rowView }; 
     } 
    } 
    throw new ArgumentException("Row not found in the default view", "row"); 
} 

と::とにかく

detailsView1.DataSource = row.ForBinding(); 
detailsView1.DataBind(); 
+0

Webフォームに戻ってくると、彼らの尻の痛みを思い出させます。私はMVCに移ってうれしいです。 – Jason

1

1つのフィールドのみを表示する場合は、出力パラメータを使用できますが、詳細ビューに複数のフィールドを表示すると、最も簡単な方法です。

+0

複数のフィールド...しかし、おかげで:) – akosch

+0

した後、あなたがDataRowを持っている場合は、このアプローチは、簡単に、たとえば、ユーティリティメソッドで拡張メソッドをラップすることができデータテーブルを選択すると、それをフィルタリングするのが簡単になりますか? – Canavar

関連する問題