+可以在表格行内按钮事件中通过event.stopPropagation()来阻止事件冒泡,从而阻止行点击事件(weining-https://t.zsxq.com/mIcWr)。
-更新示例:表格/行选择/行选择(自定义表头菜单)。
-之前需要先找到节点再注册事件(direct event handler):grid1.el.find('.f-grid-colheader .custom-arrow-down').on('click', function (event)
-现在可以使用jQuery的事件代理(delegated event handler):grid1.el.on('click', '.f-grid-colheader .custom-arrow-down', function (event)
+优化HBox和VBox布局的内部逻辑。
+容器HBox布局且未设置高度时(BoxConfigAlign的默认值为Stretch),未设置高度的子项会填充容器的高度(不兼容提醒)。
-验证示例:布局/Box/HBox(自动高度);HBox(自动高度,多层嵌套)。
-如果想保持未定义高度子项的高度自适应,可以设置容器的BoxConfigAlign=Start。
-更新示例(左侧图片会填充容器并垂直居中显示):基础/登录页面(验证码)。
-新增示例:布局/Box/HBox(自动高度,BoxConfigAlign)。
-修正后台无法显示隐藏多表头列的问题(STARK11号-https://t.zsxq.com/aoUHQ)。
-更新示例:表格/多表头/多表头(初始隐藏列)。
+注意FineUIPro、FineUICore(MVC, RazorPages)和FineUICore(RazorForms开发模式)的实现不同。
-FineUIPro中可以直接改变列的Hidden属性:var column=Grid1.FindColumn("zhumadian");column.Hidden=!column.Hidden;
+FineUICore(MVC, RazorPages)
-前台通过JS获取列的隐藏状态:new Parameter("anhuiHidden", "F.ui.Grid1.getColumn('anhui').hidden")
-后台根据此状态调用表格帮助类的相应方法:if(anhuiHidden){UIHelper.Grid("Grid1").ShowColumn("anhui");}
+FineUICore(RazorForms开发模式)
-后台使用FineColumn获取表格列实例:var genderColumn = Grid1.FindColumn("Gender");
-根据列的隐藏状态生成改变脚本:var scripts=""; if(genderColumn.Hidden){scripts=genderColumn.GetShowReference();}
-向前台注册列隐藏状态改变的脚本:PageContext.RegisterStartupScript(scripts);
-[Core]修正SummaryData为空导致的错误(6976935)。
-[Core]修正客户端JS创建工具图标的菜单对象会导致页面回发错误的问题(artfairy-https://t.zsxq.com/mlveG)。
+优化PageContext的RegisterPreStartupScript方法,新增RegisterPostStartupScript方法。
-简化方法签名,支持不定义Key的调用形式,比如:PageContext.RegisterPreStartupScript("window._SHENG=[...];");
-参数addScriptTag的默认值为true。
-这两个调用一样:RegisterPreStartupScript("window._SHENG=[...];"); 和 RegisterPreStartupScript("window._SHENG=[...];",true);
-引入外部脚本的示例:PageContext.RegisterPostStartupScript("", false);
+[Core-RazorForms]异步代码支持(Page_Load和回发事件)。
-将RazorFormsFilter的父类由IPageFilter改为IAsyncPageFilter。
-Page_Load(同步签名):protected void Page_Load(object sender, EventArgs e)
-Page_Load(异步签名):protected async Task Page_LoadAsync(object sender, EventArgs e)
-按钮回发事件(同步签名):protected void Grid1_PageIndexChanged(object sender, GridPageEventArgs e)
-按钮回发事件(异步签名):protected async Task Grid1_PageIndexChangedAsync(object sender, GridPageEventArgs e)
+[Core-RazorForms]简化自定义回发事件的触发与捕获。
-增加CustomEventArgs类。
-客户端增加__customEvent函数,如下两种调用方式效果一样。
-方法一:__customEvent('Grid1_EnableRows', {action: 'enable', rowIDs: ['row1', 'row2']});
-方法二:__doPostBack('', 'Grid1_EnableRows' + '$' + encodeURIComponent(JSON.stringify({action: 'enable', rowIDs: ['row1', 'row2']})));
+后台可以通过Page_CustomEvent来处理自定义回发事件。
-自定义回发事件(同步签名):protected void Page_CustomEvent(object sender, CustomEventArgs e)
-自定义回发事件(异步签名):protected async Task Page_CustomEventAsync(object sender, CustomEventArgs e)
-可以通过参数获取EventName和EventArguments(字符串)。如果前台传入的事件参数是一个对象,则可以直接使用属性:e.EventArgumentsAsJObject
+AppBoxCore/Pro更新(基于 FineUICore/Pro 的通用权限管理框架,包括用户管理、职称管理、部门管理、角色管理、角色权限管理等模块)。
-升级到FineUICore/Pro(社区版)v11.4(AppBoxCore采用全新的RazorForms开发模式)。
-AppBoxCore项目目标框架由.Net Core 3.1 升级到 .Net 8.0,建议使用VS2022打开项目工程。
-更新了四个版本:AppBoxPro.EF, AppBoxPro.Dapper, AppBoxCore.EFCore, AppBoxPro.Dapper。
-其中Dapper版本使用MySQL数据库,EF和EFCore版本使用SQLServer数据库。