FineUI Grid控件右键菜单的实现

FineUI官方Demo上一直没有Grid右键菜单的实现,其实从4.1.x的版本开始,允许添加自定义的事件监听(Listeners),所以要实现这个功能已经相当容易了。

ExtJs右键菜单有很多种,对于Grid控件来说,我这里只简单说明两种实现。即在表格的数据行上右键单击时弹出的菜单,以及在空白位置右键单击时弹出的菜单。

时间有限,废话不多说了,先看两个效果图。(实现环境 FineUI4.1.6,.NET 4.0因为需要指定控件的ID)

1. 数据行右键菜单

2. 空白处右键菜单

实现方法:

step1:添加Grid控件。。。不多说了

step2:往Grid控件后面添加两个Menu控件,分别对应要实现的两个右键菜单,要指定ClientIDMode为Static,Hidden为true

        <f:Menu ID="containerMenu" runat="server" ClientIDMode="Static" Hidden="true">
            <f:MenuButton Icon="Add" Text="添加" OnClick="OnAddClick"></f:MenuButton>
            <f:MenuSeparator />
            <f:MenuButton Icon="Reload" Text="刷新"></f:MenuButton>
        </f:Menu>
        <f:Menu ID="itemMenu" runat="server" ClientIDMode="Static" Hidden="true">
            <f:MenuButton Icon="Pencil" Text="修改" OnClick="OnEditClick"></f:MenuButton>
            <f:MenuButton Icon="Delete" Text="删除"></f:MenuButton>
            <f:MenuSeparator />
            <f:MenuButton Icon="Reload" Text="刷新"></f:MenuButton>
        </f:Menu>

step3:为Grid添加事件“containercontextmenu”,“itemcontextmenu”事件监听

        <f:Grid ID="Grid1" runat="server" Title="FineUI Grid右键菜单Demo" CssStyle="margin: 10px;" AllowPaging="true" PageSize="20"
        EnableHeaderMenu="false" EnableColumnLines="true" DataKeyNames="ID" >
            <Columns>
                .....省略
            </Columns>
            <Listeners>
                <f:Listener Event="containercontextmenu" Handler="function (grid, e, eOpts) { e.stopEvent(); F(‘containerMenu‘).showAt(e.getXY()); }" />
                <f:Listener Event="itemcontextmenu" Handler="function (grid, record, item, index, e, eOpts) { e.stopEvent(); F(‘itemMenu‘).showAt(e.getXY()); }" />
            </Listeners>
        </f:Grid>    

这两个事件属于ExtJs的GridPanel控件,参数说明如下:

containercontextmenu:grid:表格对象,e:事件对象,eOpts:事件对象参数;

itemcontextmenu:grid:表格对象,record:选择的行对像(可以通过record.rawData属性获得所选行的全部数据),item:html元素对象,index:行索引,e:事件对象,eOpts:事件对象参数;

如有其它想了解的地方,请去翻查ExtJs的Api doc http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid.Panel

一般情况下,照抄上面的代码就Ok了,除非你对事件处理函数有更多的要求。

step4:实现菜单功能。按照正常的方法绑定菜单按钮的事件就可以了,没什么需要特别说明的

在step2的代码里可以看到,已经为添加和修改按钮添加了服务端OnClick事件绑定。下面看一下后台代码的实现

        protected void OnAddClick(object sender, EventArgs e)
        {
            FineUI.Alert.Show("Add Click!", FineUI.MessageBoxIcon.Information);
        }

        protected void OnEditClick(object sender, EventArgs e)
        {
            var selectedrow = Grid1.Rows[Grid1.SelectedRowIndex].DataKeys[0].ToString();
            FineUI.Alert.Show(string.Format("修改ID为{0}的记录", selectedrow), FineUI.MessageBoxIcon.Warning);
        }

原创文章,转载请注明出处!

时间: 2024-10-08 13:35:19

FineUI Grid控件右键菜单的实现的相关文章

WPf 带滚动条WrapPanel 自动换行 和控件右键菜单

原文:WPf 带滚动条WrapPanel 自动换行 和控件右键菜单 技能点包括 WPf 样式的引用 数据的验证和绑定 比较适合初学者 前台: <Window.Resources> <local:PathToSource x:Key="n2"/> <Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}"> <Setter Pr

FineUI Grid控件高度自适应

引言 页面里使用f:Grid控件,添加分页功能,然后高度填充整个页面. 如何使用 使用FineUI 控件的每个页面都有一个f:PageManager控件,它包含属性:AutoSizePanelID,设置需要填充的控件ID,从它的demo可以看出,正常情况下需要再放置一个容器Panel,就可以使整个页面填充. <f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="ResultS

win32 listctrl控件右键菜单的实现

HMENU Menu_list,Menu_all; POINT point; HINSTANCE hInstance;//下面代码放到BOOL WINAPI DialogProc下 case WM_CONTEXTMENU: if((HWND)wParam == GetDlgItem(hWnd,IDC_LIST_VIEW)) { Menu_all=GetSubMenu(Menu_list,0); GetCursorPos(&point);//得到鼠标当前坐标, TrackPopupMenu(Men

扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip

原文:扩展ToolBarManager.ListView和Grid控件以实现气球式的ToolTip infragistics是全球领先的UI工具和用户体验的专家,Infragistics开发了一系列的炫目的Windows.Web.WPF和Silverlight控件,相信很多人在使用它们.我们现在的项目就在使用Infragistics的Windows Form控件集.虽然这些控件功能强大,也不可能满足你所有的需求,尤其是那些比较苛刻的最终用户的需求.比如,我们最近就接收到这样一个变态的需求:让所以

DevExpress Grid控件经典常用功能代码收集

随着DevExpress 控件包越来越多的被中国用户使用,由于是英文版本,看英文版使用说明非常困难,慧都控件网在DevExpress 控件包使用方面有多年的研究,慧都控件网会不断的把DevExpress 使用经验分享给大家.»更多DevExpress开发资源与帮助文档 下面是我们平时收集最常用的DevExpress Winform 4个代码片段,比较常用,希望对广大DEV用户有帮助. 一 .GridControl的删除操作 private void rILinkEditInfoDel_Click

fine ui grid控件添加行号

grid控件的列中添加如下代码<f:RowNumberField EnablePagingNumber="true" TextAlign="Center" /> 原文地址:https://www.cnblogs.com/wangjp-1233/p/10124727.html

WinFrom - DataGridView控件右键选中记录并弹出菜单

dataGridView右键菜单并选中该行 程序代码: private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (e.RowIndex >= 0) { dataGridView1.ClearSelection(); dataGridView1.Rows[e.RowIndex].Select

【2017-04-25】winform公共控件、菜单和工具栏、Tab和无边框窗体制作

一.公共控件 1. Button   按钮 + 布局 - AutoSize   按钮尺寸自动适应里面内容的长度 - Location    位置 - Margin       控件与控件外边距 - Size     当前尺寸 +行为 - Enabled     是否可用 - TabIndex     该控件对应的Tab键索引值 - TabStop      该控件对应的Tab键禁用时的索引值 - Visible     显示和隐藏 +外观 - BackColor    背景色 - Backgro

2017-4-25 公共控件属性 菜单和工具栏属性

(一)公共控件属性 1.Button按钮 AutoSize  内容自适应大小 Location  控件左上角相对于容器左上角的位置 Margin  控件与控件的外边距 Enabled  控件是否可以选中 TabIndex   布局用 TabStop 布局用 Visible    是否显示 FlatAppearance  FlatStyle  2个属性配合使用,可以控制按钮的边框样式等 2.CheckBox checked  是否被选中 Appearance 外观样式 CheckAlign   复