質問

これを行う前に、それが最善の方法かどうかを尋ねてみようと思いました。各「Vendor」オブジェクトには「Bucket」オブジェクトがあります。私のリピーターでは、ベンダーからのいくつかのプロパティとバケットからのいくつかのプロパティを表示する必要があります。また、ベンダーにリンクされているファイルシステムによって設定されたいくつかの画像も表示する必要があります。これを行う最良の方法は、リピーターをベンダー オブジェクトにバインドし、ItemDataBound で、その特定の Items[e.Item.ItemIndex] にバインドされているベンダーに基づいて画像とバケットを設定することだと考えました。

これが最善の方法でしょうか?

役に立ちましたか?

解決

Vendor オブジェクトが 1 つの Bucket オブジェクトしか保持できない場合は、それをすべて 1 つの最上位リピーターにバインドすることが適切な場合があります。ItemDataBound をオーバーライドすることなく、最上位レベルですべて単純なデータ バインディングを通じてバケットにアクセスできます。

ほとんどの場合「ベンダー」をバインドしているため、次の方法でバインドしたい場合は、データバインドでそのメンバーにアクセスできます。

<%# DataBinder.Eval (Container.DataItem, "Bucket.Property" ) %>

バインディングの各反復中に「何かを処理」する必要があり、意思決定のために各 Vendor オブジェクトに詳細にアクセスする必要がある場合は、ItemDataBound を実行します。

Vendor オブジェクトが複数のバケットを保持できる場合、それにアクセスする最良の方法は、ItemDataBound を使用することです。ベンダーの反復ごとに、新しいネストされたリピーターをバインドしてバケット データを表示したり、必要な繰り返し/集計機能を実行したりできます。

クライアントでどのように動作させたいかによっては、ベンダーのみをレンダリングすることもできます。ユーザーがベンダー (またはその他のもの) をクリックすると、サーバーに対して AJAX 呼び出しを実行し、バケット データを取得してページに動的にレンダリングできます。多数のベンダーとそのバケットがレンダリングされている場合は、このアプローチを試してみることをお勧めします。これにより、すべてを ASPX サーバー側で構築する場合と比較して、データベースのパフォーマンスとページのレンダリング時間が短縮されます。(ただし、これには大量のデータが必要になるため、パフォーマンスの向上を図る前に、使いやすさやクライアントの理由からそうする必要があります。)

他のヒント

これが私が通常行う方法であり、メイン オブジェクトにバインドして、ItemDataBound の詳細を処理します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top