コントロールに専用のコンテキストメニューを表示できます。 コンテキストメニューは、ユーザーが列ヘッダ、行ヘッダ、またはビューポート領域(データ領域と空白領域)を右クリックした場合に表示できます。

メニューにメニュー項目を追加したり、画像を表示するなど、さまざまなカスタマイズが可能です。また、列ヘッダ、行ヘッダあるいはビューポート領域にそれぞれ別のメニューの表示もできます。
メニュー項目が選択されたとき、サーバーおよびクライアント側の両方でイベントをハンドルできます。
設定方法
専用のコンテキストメニューの表示を有効にするには、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
関連トピック