PowerTools SPREAD for ASP.NET 8.0J > 開発者の手引き > 編集、検証、選択 > コンテキストメニュー |
コントロールに専用のコンテキストメニューを表示できます。 コンテキストメニューは、ユーザーが列ヘッダ、行ヘッダ、またはビューポート領域(データ領域と空白領域)を右クリックした場合に表示できます。
メニューにメニュー項目を追加したり、画像を表示するなど、さまざまなカスタマイズが可能です。また、列ヘッダ、行ヘッダあるいはビューポート領域にそれぞれ別のメニューの表示もできます。
メニュー項目が選択されたとき、サーバーおよびクライアント側の両方でイベントをハンドルできます。
専用のコンテキストメニューの表示を有効にするには、FpSpread クラスのEnableContextMenu プロパティをtrueに設定する必要があります。
コンテキストメニューは、FpSpread クラスのContextMenus プロパティが参照するコレクションに追加されます。コンテキストメニューオブジェクトは、ContextMenu クラスを使用して生成され、このクラスのType プロパティを使用して、コンテキストメニューの表示対象(列ヘッダ、行ヘッダまたはビューポート領域)を設定します。
メニュー項目は、MenuItem クラスを使用して生成し、ContextMenu クラスのItems プロパティ が参照するコレクションに追加します。
MenuItem クラスの各プロパティを使用して、メニュー項目の詳細を設定します。CommandArgument プロパティおよびCommandName プロパティを使用すると、メニュー項目がクリックされたときにサーバー側で発生するMenuItemClicked イベントのパラメータを使用して識別できます。
OnClientClick プロパティには、クライアント側で発生するイベントを割り当てることができます。
子項目の生成にもMenuItem クラスを使用し、親項目MenuItem クラスのChildItems プロパティのコレクションに追加します。
コンテキストメニューは、デザイン画面での生成も可能です。プロパティウィンドウのContextMenus プロパティの「...」ボタンを押下すると、コンテキストメニューエディタが起動します。コンテキストメニューエディタで作成したメニューは、マークアップコードを生成します。
次のサンプルコードは、設計時に1つのメニューを作成して、実行時にもう1つのメニューを作成します。
<ContextMenus> <FarPoint:ContextMenu Type="Viewport"> <Items> <FarPoint:MenuItem Text="Sort" ImageUrl="http://linktoimagehere/abc.jpc"> <ChildItems> <FarPoint:MenuItem Text="Child Item1 ImageUrl="http://avc/abc.jpc"></FarPoint:MenuItem> <FarPoint:MenuItem Text="Child Item2"></FarPoint:MenuItem> </ChildItems> </FarPoint:MenuItem> <FarPoint:MenuItem Enabled="True" Text="Menu item3" ImageUrl="http://linktoimagehere/abc.jpc"></FarPoint:MenuItem> </Items> </FarPoint:ContextMenu> </ContextMenus>
protected void Page_Load(object sender, System.EventArgs e) { if (this.IsPostBack) return; FpSpread1.EnableContextMenu = true; // マークアップコードを使用するか、または[プロパティ]ウィンドウでContextMenusプロパティを使用して、このビューポートメニューを作成します。 FarPoint.Web.Spread.ContextMenu viewportMenu = FpSpread1.ContextMenus[FarPoint.Web.Spread.ContextMenuType.Viewport]; FarPoint.Web.Spread.MenuItem customViewportItem = new FarPoint.Web.Spread.MenuItem("Viewport item 1"); customViewportItem.ChildItems.Add(new FarPoint.Web.Spread.MenuItem("Child item 1")); customViewportItem.ChildItems.Add(new FarPoint.Web.Spread.MenuItem("Child item 2")); viewportMenu.Items.Add(customViewportItem); // この行ヘッダメニューをここで作成します(マークアップや設計時プロパティは使用しない) FarPoint.Web.Spread.ContextMenu rowHeaderContextMenu = new FarPoint.Web.Spread.ContextMenu(); rowHeaderContextMenu.Type = FarPoint.Web.Spread.ContextMenuType.RowHeader; FarPoint.Web.Spread.MenuItem rowHeaderItem = new FarPoint.Web.Spread.MenuItem("RowHeader item 1"); rowHeaderItem.ChildItems.Add(new FarPoint.Web.Spread.MenuItem("Child item 1")); rowHeaderItem.ChildItems.Add(new FarPoint.Web.Spread.MenuItem("Child item 2")); rowHeaderContextMenu.Items.Add(rowHeaderItem); FpSpread1.ContextMenus.Add(rowHeaderContextMenu); }
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If (IsPostBack) Then Return End If FpSpread1.EnableContextMenu = True ' マークアップコードを使用するか、または[プロパティ]ウィンドウでContextMenusプロパティを使用して、このビューポートメニューを作成します。 Dim viewportMenu As FarPoint.Web.Spread.ContextMenu =FpSpread1.ContextMenus(FarPoint.Web.Spread.ContextMenuType.Viewport) Dim customViewportItem As New FarPoint.Web.Spread.MenuItem("Viewport item 1") customViewportItem.ChildItems.Add(New FarPoint.Web.Spread.MenuItem("Child item 1")) customViewportItem.ChildItems.Add(New FarPoint.Web.Spread.MenuItem("Child item 2")) viewportMenu.Items.Add(customViewportItem) ' この行ヘッダメニューをここで作成します(マークアップや設計時プロパティは使用しない) Dim rowHeaderContextMenu As New FarPoint.Web.Spread.ContextMenu() rowHeaderContextMenu.Type = FarPoint.Web.Spread.ContextMenuType.RowHeader Dim rowHeaderItem As New FarPoint.Web.Spread.MenuItem("RowHeader item 1") rowHeaderItem.ChildItems.Add(New FarPoint.Web.Spread.MenuItem("Child item 1")) rowHeaderItem.ChildItems.Add(New FarPoint.Web.Spread.MenuItem("Child item 2")) rowHeaderContextMenu.Items.Add(rowHeaderItem) FpSpread1.ContextMenus.Add(rowHeaderContextMenu) End Sub