eXpressApp Frameworkが多数に同梱されている内蔵のリストエディタ。ただし、特定のシナリオでは、あなたが特定の方法でオブジェクトのコレクションを表示するには、カスタムリストエディタを実装する必要があるかもしれません。このトピックでは、カスタム実装する方法を示しASPxCustomListEditorカスタムコントロールを使用してリストエディタを。このリストエディタは、カスタム実装し、表示オブジェクトに設計されてIPictureItemの画像の一覧、各オブジェクトに1つとしてインターフェイスを。DVDのカバーを表示するには、例えば、使用することができます。
eXpressAppフレームワークは、内蔵のリストエディタの多くが付属しています。しかし、いくつかのケースでは、カスタムリストエディタが特定の方法でオブジェクトのコレクションを表示する実装する必要があります。このトピックでは、カスタムコントロールのカスタムASPXカスタムリストエディタリストエディタを使用する方法を示します。このリストは、IPictureItemは、カスタムインターフェイスを実装し、リストとして各オブジェクト画像をオブジェクトエディタを示すことを意図しています。例えば、DVDのカバーを表示するために使用することができます。
以下の画像は、アルバムリストビューで実装リストエディタを示しています。
次の図は、達成するために、リストエディタのアルバムのリストビューを示しています。
Note 注意
- あなたはここで実装されたコードを確認できFeatureCenterデモでインストールXAF。このデモは、に位置しています\ドキュメント\ DevExpress社のデモ%のPUBLIC%の19.2 \コンポーネント\ eXpressApp Frameworkの\ FeatureCenterのデフォルトでは、フォルダ。
使用ASP.NETコントロールClientScriptManager.RegisterStartupScriptの方法は、この例を使用して統合することはできません。そのようなAの制御を統合する必要がある場合は、当社までお気軽にサポートチームを
- あなたはXAFインストールを使用したプレゼンテーションの中央に、ここでの機能を実装するコードを見ることができます。デフォルトでは、このデモは、%PUBLIC%を_ドキュメント_DevExpressプレゼンテーション19.2_コンポーネント_eXpressAppフレームワーク_機能センターのフォルダにあります。
- ASP.NETは、クライアントスクリプトマネージャーコントロールを使用しています。あなたは統合登録スタートアップスクリプトのこの例を使用することはできません。あなたは、このようなコントロールを統合する必要がある場合は、いつでもサポートチームにお問い合わせください
特定のデータと連携したカスタムリストエディタを実装するときは、特定のクラスのためにそれを設計することができます。しかし、この例では、インターフェイスは、リストエディタによって必要とされる特性を含む導入されます。次に、リストエディタは、インターフェイスを実装するオブジェクトを表示するように設計されます。このアプローチは、あなたが同時に異なるクラスのために、同じリストエディタを使用することができます。介して表示リストビューASPxCustomListEditorは、 2つの列があります:画像とテキストを。特別なインターフェースは、追加の有するIDの一意のオブジェクト識別子を表すプロパティ。
特定のカスタムリストエディタのためのデータを実装する場合、それは特定のクラスのために設計することができます。しかし、この例では、インターフェイスは所望の特性がリストエディタが含まれているに導入されます。次に、リストエディタは、インターフェイスを実装設計対象を表示します。この方法では、異なるクラスのためのエディタの同じリストを使用することができます。画像とテキスト:2を含むリストエディタASPXカスタムリストビュー表示によって。追加の特別なインタフェースを持つユニークなID属性オブジェクト識別子を表します。
使用System.Drawingを。 // ... パブリック インターフェイスIPictureItem { イメージイメージ{ GET 。} 文字列テキスト{ GET 。} 文字列 ID { GET 。} }
以下からの継承クラスでリストエディタの実装を開始ListEditorのクラス、および以下のメンバーをオーバーライドすることで、基本的な機能を実装します。あなたのエディタは、公開でなければならないことに注意してください。
- CreateControlsCoreのリストエディタのコントロールをインスタンス化する方法。(この例でカスタムコントロールのインスタンスを作成および構成するためにそれをオーバーライドASPxCustomListEditorControl)。
- AssignDataSourceToControlのその制御にリストエディタのデータソースを割り当て方法。
- ListEditor.Refreshメソッドリストエディタのコントロールのリフレッシュデータ・ソースという。
- 表示するリストビューように指定するにIPictureItemのオブジェクトが使用するASPxCustomListEditorを、とリストエディタクラスを飾るListEditorAttribute。
ListEditorリストエディタの実装を開始し、以下のメンバーを書き換えることにより、基本的な機能を実現するために、クラスから継承し、そのクラス。あなたのエディタは、公開する必要がありますのでご注意ください。
- リストエディタは、コントロールの「コントロールセンター」アプローチのインスタンスを作成します。例としては、カスタムコントロールと設定(この例では、ASPXカスタムリストエディタコントロール)を作成するためにオーバーライド。
- データソースリストエディタのソース制御データ配信方法は、そのコントロールに割り当てられています。
- リストエディタ。データソースリストエディタコントロールをリフレッシュするためのリフレッシュ方法。
- 表示リストビューIPictureItemオブジェクトは、ASPXカスタムリストエディタを使用するように指定するには、装飾的なListEditorプロパティリストエディタクラスを使用します。
使用してシステムを。 使用してDevExpress.ExpressApp.Editorsを。 使用してDevExpress.ExpressApp.Modelを。 使用してDevExpress.ExpressApp.Utilsを。 // ... [ListEditor(typeof演算(IPictureItem))] パブリック クラスASPxCustomListEditor:ListEditor { 公共 ASPxCustomListEditor(IModelListView情報):ベース(情報){} プライベートASPxCustomListEditorControl制御。 保護 オーバーライド オブジェクトCreateControlsCore(){ コントロール = 新しいASPxCustomListEditorControl()。 control.ID= " CustomListEditor_control " 。 戻り値のコントロール; } 保護 オーバーライド ボイドAssignDataSourceToControl(オブジェクトデータソース){ 場合(!コントロール= NULL ){ control.DataSource = ListHelper.GetList(データソース)。 } } パブリック オーバーライド ボイドリフレッシュ(){ 場合(対照=!ヌル)control.Refresh(); } }
上で示したリストエディタが実装するオブジェクトのコレクションを表示することができますIPictureItemのインターフェイスを。また、リストエディタは、エンドユーザーがオブジェクトをクリックしたときにフォーカスがあるオブジェクトのための詳細ビューを呼び出すことができるはずです。このためには、以下のメンバーを変更します。
- でCreateControlsCoreの方法、コントロールのにサブスクライブのOnClickイベント。イベントハンドラでは、呼び出しOnSelectionChangedとOnProcessSelectedItem方法を。
- オーバーライドListEditor.FocusedObjectのフォーカスがあるオブジェクトを取得および設定するために、方法を。
IPictureItemインタフェースは、オブジェクトのコレクションの実装を表示することができ、リストエディタ上で示しました。また、エンドユーザーがクリックしたときにオブジェクトリストエディタは、より多くの情報ビューフォーカスオブジェクトに対して呼び出すことができるはずです。これを行うには、以下のメンバーを変更します。
- 「コントロールコアを作成する」アプローチでは、コントロールのOnClickイベントをサブスクライブします。イベントハンドラでは、コールは、プロジェクトメソッドを「選択」OnSelectionChangedと。
- ListEditor。フォーカスオブジェクトのメソッドをカバーし、取得し、フォーカスオブジェクトを設定します。
また、カスタム実装CustomListEditorClickEventArgsを持つクラスIPictureItemのためのフィールドのOnClickイベントを。
また、カスタムリストでIPictureItemフィールドのOnClickイベントは、エディタのEventArgsクラスをクリックします。
[ListEditor(typeof演算(IPictureItem))] パブリック クラスASPxCustomListEditor:ListEditor { // ... 保護 オーバーライド オブジェクトCreateControlsCore(){ // ... control.OnClick + = 新規のEventHandler <CustomListEditorClickEventArgs> (control_OnClick)。 // ... } プライベート ボイド control_OnClick(オブジェクト送信者、CustomListEditorClickEventArgs E){ この .FocusedObject = e.ItemClicked。 )(OnSelectionChanged。 OnProcessSelectedItem(); } プライベート オブジェクトfocusedObject; 公共 オーバーライド オブジェクトFocusedObjectは{ 取得{ リターンfocusedObjectを。 } 集合{ focusedObject = 値。 } } } パブリック クラスCustomListEditorClickEventArgs:のEventArgs { 公共IPictureItem ItemClicked。 }
最後のステップは、以下の抽象メンバーを実装することです:
- オーバーライドListEditor.SelectionTypeのプロパティを。リストエディタは、ポストバックが処理している間だけ有効である選択をサポートしているので、このプロパティは返さなければなりませんSelectionType.TemporarySelectionの値を。
- オーバーライドListEditor.GetSelectedObjectsの方法を。この方法では、選択したオブジェクトのリストを返す必要があります。私たちの場合、これはフォーカスがあるオブジェクトです。
- オーバーライドListEditor.ContextMenuTemplateプロパティを。このプロパティは、リストエディタのコンテキストメニューをサポートするために使用されます。インターネットブラウザがすでにコンテキストメニューを持っているので、私たちは、このプロパティにはnullを返します。
最後のステップは、以下の抽象メンバーを実装することです:
- リストエディタをカバーする。type属性を選択します。リストエディタがサポートしてロールバックを処理するときに、ので、この属性はのSelectionTypeを返さなければなりません。一時的な値を選択するだけで、アクティブ選択するため。
- リストエディタを覆うこと。選択したオブジェクトのメソッドを取得します。このメソッドは、選択したオブジェクトのリストを返す必要があります。この例では、これは、オブジェクトの焦点です。
- オーバーレイリストエディタのコンテキストメニューテンプレートのプロパティ。このプロパティは、リストエディタのコンテキストメニューをサポートするために使用されます。Internet Explorerはので、このプロパティが返すのはnullで、コンテキストメニューを持っているので。
使用にSystem.Collectionsを。 使用してSystem.Collections.Genericを。 使用してDevExpress.ExpressAppを。 使用してDevExpress.ExpressApp.Templatesを。 // ... [ListEditor(typeof演算(IPictureItem))] パブリック クラスASPxCustomListEditor:ListEditor { // ... 公共 オーバーライドのSelectionTypeのSelectionType { GET { 戻りSelectionType.TemporarySelection。} } 公共 オーバーライドのIList GetSelectedObjects(){ リスト < オブジェクト > selectedObjects =新しいリスト< オブジェクト > (); もし(!FocusedObject = ヌル){ selectedObjects.Add(FocusedObject)。 } 戻りselectedObjects。 } 公共 オーバーライドIContextMenuTemplate ContextMenuTemplate { GET { 戻り ヌル。} } }