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 分 备用地址
目录
相关文章
|
前端开发
ASP.NET-FineUI开发实践-18
Grid编辑下垃级联 看了看专业版的例子,分为以下几步,都是前端的 1.编辑父下拉框后,重置子下拉框 2.编辑子下垃框前,通过父下垃框数据得到下垃项,然后绑定数据 所以这里要截取Grid的两个事件,编辑前事件和编辑后事件 我以前博客里有编辑前事件 即beforeedit 编辑后事件为 edi...
902 0
|
JavaScript
ASP.NET-FineUI开发实践-17
我又不用FineUI开发,所以FineUI项目经验等于0,最近在忙别的,所以也没工夫研究。积累了论坛和群里的问题,写下来留个备份 1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现 引用地址 http://fineui.
1061 0
|
JavaScript
ASP.NET-FineUI开发实践-16(二)
实现那还差点,在事件参数里我传了一个boolall选中状态参数,这个参数由前台给的,RowSelect 传的是index 行号,就是改这,通过$符号来分开的, if (commandArgs.Length == 2) { OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString()))); }    就是这个段代码干的事。
930 0
|
JavaScript 程序员
ASP.NET-FineUI开发实践-16(一)
还是基础的东西,grid全选没有事件,给加个事件,除了需要会复制粘贴外还要点推荐那!   第一步:原理  事件被触发,方法被实现。 对于全选事件,被触发有两种方式可写,一个是通过原生extjs方式触发,extjs就没有全选的事件,正常思路就是选择的行等于全部的行就触发了,这个方法听起来就恶心,所以还是放弃了;简单点写就是第二种方法直接通过点击触发,点了全选就触发全选事件了。
793 0
|
JavaScript
ASP.NET-FineUI开发实践-15
1.按条件控制Grid不可编辑     Grid编辑其实用到的不多...但是也有要控制权限或者其他条件不能编辑的情况其实挺简单,学过extjs的知道,我现在也只是写前台了,没有写到后台事件,有时间再说吧,如果条件是服务器判断可以参考官网的给行和列加样式的例子,轻轻点我就转到了 我这么好心就吧源码贴出来吧   1 F.
748 0
|
JavaScript
ASP.NET-FineUI开发实践-14
以前写过一个表格自动补全,改下,就出现了部分级联修改。测试版本4.1.1 共享下JS,ext-part2.js       后台再来个得到数据的方法就可以了。   1.方法还是删除+插入,主要在  if (record.
937 0
|
JavaScript 缓存 前端开发
ASP.NET-FineUI开发实践-13(二)
1.加图标和事件 上次已经通过DataSimulateTreeLevelField属性控制了树节点的显示,不用看也知道就是给指定列数据前面加个图标的HTML 可以在SimulateTreeHeper类里看到实现方法,不多说了,原理就是循环行累加上图片就可以了,注意图片的ID和样式 ...
870 0
|
JavaScript .NET 开发框架
ASP.NET-FineUI开发实践-12
1.网上找到了行合并的示例,extjs写的,我把它挪过来改了下,FineUI也能用,就是只能放着看,选择和编辑行扩展列没有测试,放出来大家看着用吧。 F.ready(function () { //方法span 参数(grid实例,行号,列...
742 0
|
JavaScript .NET 开发框架
ASP.NET-FineUI开发实践-10
嵌套Grid,光棍月大放送,不藏着掖着。实在写的不好,没脸藏啊~只考虑显示排序修改什么的都不管! 话说三石官网加实例了,http://fineui.com/demo/#/demo/grid/grid_rowexpander_grid.aspx 是用extjs写的,我写的啰嗦点 扩展行是咋出来的,我着实没看懂,但是要实现效果也有方法,先想一下, 1.嵌套的Grid数据应该是动态的,我只知道在后头绑,事件是前台触发的,那就是把ID传后台就行了。
855 0
|
JavaScript API
ASP.NET-FineUI开发实践-9(四)
现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的。 1.
846 0
相关产品
云迁移中心
推荐文章
更多