FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1713|回复: 2
打印 上一主题 下一主题

FineUI项目心得

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-8 11:05:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用FineUI作为前台框架,用MailBee.NET Objects邮件控件,开发Web邮箱客户端。
期间遇到了不少问题,也都解决了。分享出来,希望可以帮助遇到跟一样问题的朋友。
1.窗口最大化,也就是设置AutoSizePanelID="Window1";Window1一定要设置宽和高,不然在部分浏览器会显示不正常。
2.后台弹出确认对话框,执行后台代码的方法。
一、添加隐藏按钮(ID=DoRead)
二、后台写入类似如下的代码:string str = Confirm.GetShowReference("发送人请求一个收条以表示您已经阅读过这封邮件,您愿意发送一个收条吗?", "提醒",
                                                                  MessageBoxIcon.Question,
                                                                  "javascript:__doPostBack('Window1$DoRead','" +
                                                                  MyNetEmail.FromUser + "," + MyNetEmail.EmailTitle +
                                                                  "," + MyNetEmail.TimeStr.ToString() + "," +
                                                                  MyNetEmail.MAILTO + "')", "", Target.Self);
                            PageContext.RegisterStartupScript(str);
其中Window1$DoRead'是把隐藏按钮的客户端ID中的'_'替换成'$'
三、添加隐藏按钮的点击事件,通过string args = Request.Form["__EVENTARGUMENT"];取参数。
3.无论是单选框还是多选框,后台事件的触发,必须设置AutoPostBack="True"
4.树控件全选反选使用官方的示例,反应速度有点。于是使用前台JS的操作方法。
//选中父节点,子节点全部选中
var TreeMainClient = '<%= TreeMain.ClientID %>';
在onReady()里面添加
TreeMainX = X(TreeMainClient);
TreeMainX.addListener('checkchange', checkchange);
然后添加这个方法
                var checkchange = function(node, state) {
                    if (node == null) {
                        return;
                    }
                    node.eachChild(function(n) {
                        n.ui.toggleCheck(state);
                        n.attributes.checked = state;
                        n.fireEvent('checkchange', n, state);
                        return true;
                    });
                };
5.开发树控件查询节点方法,不过有个问题。查询的路径经过的节点是展开的,导致效率变低。
function filterTree(tf, newValue, oldValue) {
                    var text = tf.getRawValue();
                    var tree = TreeMainX;
                    var root = tree.getRootNode();
                    var currtime = 0;
                    if (Ext.isEmpty(text, false)) {
                        clearFilter();
                        return;
                    }
                    if (text == oldvalue) {
                        scantime = scantime + 1;
                        if (scantime < 0) {
                            scantime = 0;
                        }
                    } else {
                        scantime = 0;
                        oldvalue = text;
                    }
                    var node = null;
                    var nodeList = new Array();
                    root.findChildBy(function(n) {
                        if (!n.leaf && !n.isLoaded()) {
                            n.reload();
                            return false;
                        }
                        if (!n.leaf) {
                            return false;
                        }
                        if (isChinese(text)) {
                            var reg = new RegExp(text);
                            if (reg.test(n.text)) {
                                // node = n;
                                if (currtime >= scantime) {
                                    nodeList.push(n);
                                    return true;
                                } else {
                                    nodeList.push(n);
                                    currtime++;
                                    return false;
                                }
                            }
                        } else {
                            if (checkPy(text, n.text, this.pyCache)) {
                                //node = n;
                                if (currtime >= scantime) {
                                    nodeList.push(n);
                                    return true;
                                } else {
                                    nodeList.push(n);
                                    currtime++;
                                    return false;
                                }
                            }
                        }
                        return false;
                    }, this, true);
                    if (nodeList.length < (scantime + 1)) {
                        scantime = 0;
                    }
                    node = nodeList[scantime];
                    if (node == null || node.getPath() == null) {
                        return;
                    }
//            tree.collapseAll();
                    tree.expandPath(node.getPath(), 'id');
                    tree.selectPath(node.getPath(), 'id');
                }
相关JS见附件。
6.FineUI与swfupload相结合,开发上传进度显示,多附件批量上传的方法。由于篇幅较长,会单独开个帖子。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2013-7-8 13:15:02 | 只看该作者
高手啊,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-28 11:35 , Processed in 0.046246 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表