2009-03-24 10 views
0

は、私がページに私は、すべてのニュースを表示するには、リピータにリストをバインド機能表示し、選択したレコード

IList<News> GetAll(); 

で取得するデータベース内のすべてのニュース、の表示があります。ユーザーはニュースNをクリックすると、彼はpage.aspxにリダイレクトされるのQueryString [「idが」]に設定されている場合は、ID = N

は、その後、私はこのように私のニュースのいずれかを取得:?

News news = sNewsService.Get(int.Parse(id)); 

今、私はこの単一のニュースを表示したいと思いますが、IListSourceまたはIEnumerableを実装していないため、Repeaterにバインドすることはできません。

lText = news.Textのような別のラベルにすべてのプロパティ値を書き込むのではなく、1つのニュースのプロパティを表示する方法はありますか? lTitle = news.Title; ...またはリストにニュースをラップしますか?

答えて

0

私はMVCに製品を変換して作成したカスタムDTOの/ビュー

1

DetailsViewコントロールは、単一のレコードを表示するように設計されています。それが助けになるかどうかは分かりません。

+0

DetailsViewコントロールはSystem.Collections.IEnumerableインターフェイスを実装するデータソースにバインドすることができますので、これはそれ自体では動作しません。 – Spikolynn

+0

ObjectDataSourceでオブジェクトをラップしようとする可能性があります –

1

これは、リピータがNewsオブジェクトのリストを表示し、次に選択したNewsオブジェクトの詳細を表示する詳細ページにリダイレクトできる典型的なマスター/ディテールシナリオのようです。

この場合、DetailsViewの代わりにFormViewを提案します。これにより、事前構成済みの行ベースの表示ではなくユーザー定義のテンプレートが必要なため、詳細表示をより詳細に制御できます。

ニュースクラスにはIEnumerableが実装されていないため、データバインディングを有効にするにはObjectDataSourceを使用する必要があります。このデータソースはクラスをラップして、Evalベースのルックアップ構文を使用してFormViewをバインドすることができます。

関連する問題