|
我用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
|