ASP.NET-FineUI开发实践-11

简介: 我用实例项目写了个子父页面传值,算是比较灵活的写法,可以把js提取出来写成包,然后调用,我先一步一步写,为有困难的朋友打个样。 先画个页面: 上面是个查询用的表单,底下是表格,内存分页,用到了VBox布局注意BoxFlex属性的应用,页面还有一个window页面。

我用实例项目写了个子父页面传值,算是比较灵活的写法,可以把js提取出来写成包,然后调用,我先一步一步写,为有困难的朋友打个样。

先画个页面:
上面是个查询用的表单,底下是表格,内存分页,用到了VBox布局注意BoxFlex属性的应用,页面还有一个window页面。我会把源码放出来。
1.先看查询
姓名的查询按钮会弹出一个window,打开window前后台都差不多,我用了前台,这个样子滴
<f:TriggerBox runat="server" Label="姓名" AutoPostBack="false" TriggerIcon="Search"
   OnClientTriggerClick="ShowWindow()" ID="TriggerBox1" EnablePostBack="False">
</f:TriggerBox>

 

1 //显示window
2         function ShowWindow() {
3             F('<% =Window1.ClientID %>').f_show('./selectgrid.aspx', '选择', 800, 500);
4         }

第一个参数是url,第二个是标题,然后是宽和高。js比回发快不多说。

选择window下有按钮三个:确定,确定并查询,取消在最底下,注意grid 的EnableMultiSelect 属性,三按钮都是前台写的,没有触发后台,可能是写的简单,但也感觉挺灵活的。
贴出来注意多看一眼注释,确认和确认并查询的方法,其实就是多个回发,但回发要在上层执行,方法写在后台我感觉乱,转不过来,所以都搬前台来了,一步一步写,所以灵活,我可以中间干点别的。
        function select(select_back) {
            //得到选择的行
            var rows = F('<% =Grid1.ClientID  %>').f_getSelectedRows();
            //选择项
            var provinceName;
            //注意each的使用
            Ext.Array.each(rows, function (rowIndex, index) {
                //得到选择的行数据和列数据
                var rec = F('<% =Grid1.ClientID  %>').store.getAt(rowIndex);
                provinceName = rec.get('Name');
            });
            //核心:得到当前的window
            var activeWindow = F.wnd.getActiveWindow();
            //核心:执行上层的js
            activeWindow.window.selectProvince(provinceName, select_back);
            //核心:隐藏该window
            activeWindow.f_hide();
        }

执行了上层的selectProvince方法,再把selectProvince方法贴出来,上层就是window_grid页面

        function selectProvince(name, select_back) {
            //给控件赋值
            F('<% =TriggerBox1.ClientID %>').setValue(name);
            //是否回发
            if (select_back) {
                //回发事件
                F.customEvent('SelectGrid');
            }
        }

 


其实有了customEvent方法 爱怎么回发怎么回发,后台方法就是通过姓名查询数据,没啥好写的。
这个例子主要是打开window,打开的window通过执行上层的js回发至后台灵活执行方法。
2.修改
也是打开个window,这里得到了一个选择行的Id,当做参数传过去了,后来发现这个没用到,反正我没用到,注意 rec.get(方法 参数是ColumnID
        function Grid_Edit() {
            var rows = F('<% =Grid1.ClientID  %>').f_getSelectedRows();
            var id;
            Ext.Array.each(rows, function (rowIndex, index) {
                var rec = F('<% =Grid1.ClientID  %>').store.getAt(rowIndex);
                id = rec.get('ItemId');
            });
            F('<% =Window1.ClientID %>').f_show('./gridedit.aspx?id=' + id, '修改', 500, 300);
        }

 加载数据也是js写的,Bindedit方法上下也用到了。

        F.ready(function () {
            Bindedit();
        });
        function Bindedit(Position) {
            var activeWindow = F.wnd.getActiveWindow();
            var id = activeWindow.window.GetSelectID(Position);
            F.customEvent('Bindedit_' + id);
        }

 用到了上层的GetSelectID方法,参数是上还是下。

        function GetSelectID(Position) {
            var grid = F('<% =Grid1.ClientID  %>');
            var selectedValues = [];
            var rows = grid.f_getSelectedRows(), id;
            Ext.Array.each(rows, function (rowIndex, index) {
                //上机制,到0了就上不去了
                if (Position == "top" && rowIndex != 0) {
                    rowIndex = rowIndex - 1;
                }
                //到最后也上不去了
                if (Position == "next" && rowIndex != grid.f_getPaging().f_pageSize - 1 && rowIndex != grid.getStore().getCount()) {
                    rowIndex = rowIndex + 1;
                }
                //想写翻页着,不好写
                if (rowIndex == grid.f_getPaging().f_pageSize - 1) {
                    //F.customEvent('rowIndex_Next_');
                }
                //新方法:选择当前行
                selectedValues.push(rowIndex);
                grid.f_selectRows(selectedValues);
                //得到行对应列的数据
                var rec = grid.store.getAt(rowIndex);
                id = rec.get('ItemId');
            });
            return id;
        }

 

还有一个方法是GetWindow,我以前写过,看看代码吧。晚了睡觉。
这个JS写的有点肿,可以直接后台调用,可以参见 ASP.NET-FineUI开发实践-17对传值进行了优化
发个图:
 
下载地址: CSDN 0 分  备用地址
目录
相关文章
|
14天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3
|
14天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
14天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
36 1
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
2月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
64 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
49 0

相关实验场景

更多