私はVehicleという基本クラスを持っています。私は車、Suv、トラックなどと呼ばれるクラスを派生しました。リストビューで個々の子クラスを別々にレンダリングする最も良い方法は何ですか?
私ができる必要があるのは、リストビューにそれらをバインドすることです。
ListView.DataSource = List<Vehicle>;
ListView.DataBind();
List<Vehicle>
は車のミックスすることができ、トラックなど
aspxページで、私は彼らのvehicletypeプロパティに応じてそれらを表示できるようにしたいです。
<uc:VehicleView ID="VehicleView" runat="server" VehicleItem='<%#DataBinder.GetDataItem(Container) as Vehicle %>' />
このユーザーコントロールは、データバインド時にコードの背後に正しいオブジェクトを持ちます。これらはすべてこれまでのところ動作します。
リストのページには、車両クラスの共通のプロパティのみが記載されていますが、車種ごとに異なる物やレイアウトを表示する必要があります。
私の質問は、この単一の車両ビューコントロールに異なるデータを表示する最もよい方法です。他のパネルを切り替えて、コード、その他のオプションで異なるユーザーコントロールを読み込みますか?私はaspxのhtmlを維持したいと思います。あなたが前にそれをしなかったと例のほとんどがリストにある場合、実装はデータソースがあるときのために(少しトリッキーかもしれません
<asp:ListView runat="server">
<ItemTemplate>
<uc:CVehicleView runat="server" DataSource='<%# Container.DataItem %>'>
<Car>
html for car goes here <%# Eval("SpecificCarProperty") %>
</Car>
<Suv>
html for suv goes here <%# Eval("SpecificSuvProperty") %>
</Suv>
</uc:CVehicleView>
</ItemTemplate>
</asp:ListView>