ASP.NET-FineUI开发实践-17
2015-12-31 12:30
453 查看
我又不用FineUI开发,所以FineUI项目经验等于0,最近在忙别的,所以也没工夫研究。积累了论坛和群里的问题,写下来留个备份
1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现
引用地址 http://fineui.com/bbs/forum.php?mod=viewthread&tid=7730&page=1#pid36686
解决办法,利用了grid编辑前事件,现在FineUI开源版写事件很方便,所以没啥新鲜的,添加事件
Event 就是事件名称,比如 click dbclick等,Handler就是调用的方法函数,这里就写函数名称即可,参数是自动传的
实现:
看注释应该能看懂,第一个是...第二个...第三个,反正就是参数...
2.封了一下上级回发的方法,以前写过,都是前台的,给封了一下下,改了源码
这个方法就是把得到上级给得到然后回传方法,触发上级的PageManager1_CustomEvent事件第二个是个重载,给改了,实现的目的就是可以传自己想传的参数,比如下面这个方法
父页面就可以写成
CustomEventArgs扩展了两个参数,就是定义了一个规则罢了 既然叫自定义事件参数那就自定义好了
没必要向我这么写,只是给了灵感吧
3.也是在论坛上看见的,我新想最起码攒三个在写博客,今天就看见了,查了查,封个方法就可以了
请问FineUI开源版中如何实现Grid保持行选中状态?就好像专业版中的 KeepCurrentSelection ,例子在这里 http://fineui.com/demo_pro/#/dem ... rrentselection.aspx。感觉这个很有用,现在开原版多选行只能按住Ctrl键实现点击每一行的任意位置多选,而且很容易误操作。
引用页面 http://fineui.com/bbs/forum.php?mod=viewthread&tid=7861
extjs 是有这个参数的,就是给写到源码里了
Grid.cs 文件新增属性
3534行改下
就可以了,环境是4.2.2
源码啥的都考走吧,也不截图了,没啥可玩的,就是好久不写,凑个一章算是 2015 最后一炮,大家跨年吉祥
1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现
引用地址 http://fineui.com/bbs/forum.php?mod=viewthread&tid=7730&page=1#pid36686
解决办法,利用了grid编辑前事件,现在FineUI开源版写事件很方便,所以没啥新鲜的,添加事件
Event 就是事件名称,比如 click dbclick等,Handler就是调用的方法函数,这里就写函数名称即可,参数是自动传的
</Columns> <Listeners> <f:Listener Event="beforeedit" Handler="Gbeforeedit" /> </Listeners> </f:Grid>
实现:
看注释应该能看懂,第一个是...第二个...第三个,反正就是参数...
function Gbeforeedit(editor, e, eop) { //得到选择器控件 var edcmp = e.column.getEditor(); //如果是个text if (edcmp.getXType() == "textfield") { //选中文字,注意延迟, window.setTimeout(function () { edcmp.selectText(); }, 100); } }
2.封了一下上级回发的方法,以前写过,都是前台的,给封了一下下,改了源码
/// <summary> /// 触发上层方法 方法名称,参数,参数,参数 /// </summary> /// <param name="funname">方法名称</param> /// <param name="eves">参数</param> public void ParentsCustomEvent(string funname, params string[] eves) { string eve = funname + '|' + string.Join("$", eves); //string js = "(function(){var aw=F.wnd.getActiveWindow();if(aw){aw.window.F.customEvent('" + eve + "');}})();"; string js = "(function(){parent.F.customEvent('" + eve + "');})();"; FineUI.PageContext.RegisterStartupScript(js); } /// <summary> /// 触发上层方法 是否关闭窗体,方法名称,参数,参数,参数 /// </summary> /// <param name="bhide">是否关闭窗体</param> /// <param name="funname">方法名称</param> /// <param name="eves">参数</param> public void ParentsCustomEvent(bool bhide, string funname, params string[] eves) { string eve = funname + '|' + string.Join("$", eves); string hide = ""; if (bhide) { hide += "aw.f_hide();"; } string js = "(function(){var aw=F.wnd.getActiveWindow();if(aw){aw.window.F.customEvent('" + eve + "');" + hide + "}})();"; //string js = "(function(){parent.F.customEvent('" + eve + "');})();"; FineUI.PageContext.RegisterStartupScript(js); }
这个方法就是把得到上级给得到然后回传方法,触发上级的PageManager1_CustomEvent事件第二个是个重载,给改了,实现的目的就是可以传自己想传的参数,比如下面这个方法
protected void btnSaveContinue_Click(object sender, EventArgs e) { // 1. 这里放置保存窗体中数据的逻辑 //方法名称,参数 ParentsCustomEvent("show", "就是这么封", "就是这么封1", "就是这么封2", "就是这么封3", "就是这么封4"); // 2. 关闭本窗体,然后回发父窗体 //PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); }
父页面就可以写成
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) { //方法名称 if (e.funname == "show") { string s = ""; //循环参数集合 foreach (string item in e.evelist) { s += item + ";"; } //事件参数 Alert.Show(s); } }
CustomEventArgs扩展了两个参数,就是定义了一个规则罢了 既然叫自定义事件参数那就自定义好了
/// <summary> /// 自定义事件参数 /// </summary> public class CustomEventArgs : EventArgs { private string _eventArgument; /*扩展参数*/ private List<string> _evelist;//事件参数集合 private string _funname;//触发方法名称 /// <summary> /// 触发方法名称 /// </summary> public string funname { get { return _funname; } set { _funname = value; } } /// <summary> /// 事件参数集合 /// </summary> public List<string> evelist { get { return _evelist; } set { _evelist = value; } } /// <summary> /// 事件参数 /// </summary> public string EventArgument { get { return _eventArgument; } set { _eventArgument = value; } } /// <summary> /// 构造函数 /// </summary> /// <param name="eventArgument">事件参数</param> public CustomEventArgs(string eventArgument) { _eventArgument = eventArgument; /*扩展解析方法*/ _evelist = new List<string>(); if (eventArgument.IndexOf('|') > 0) { _funname = eventArgument.Split('|')[0]; string[] s = eventArgument.Split('|')[1].Split('$'); for (int i = 0; i < s.Length; i++) { _evelist.Add(s[i]); } } } }
没必要向我这么写,只是给了灵感吧
3.也是在论坛上看见的,我新想最起码攒三个在写博客,今天就看见了,查了查,封个方法就可以了
请问FineUI开源版中如何实现Grid保持行选中状态?就好像专业版中的 KeepCurrentSelection ,例子在这里 http://fineui.com/demo_pro/#/dem ... rrentselection.aspx。感觉这个很有用,现在开原版多选行只能按住Ctrl键实现点击每一行的任意位置多选,而且很容易误操作。
引用页面 http://fineui.com/bbs/forum.php?mod=viewthread&tid=7861
extjs 是有这个参数的,就是给写到源码里了
Grid.cs 文件新增属性
/// <summary> /// 启用保存多行选择 /// </summary> [Category(CategoryName.OPTIONS)] [DefaultValue(true)] [Description("启用多行选择")] public bool KeepCurrentSelection { get { object obj = FState["KeepCurrentSelection"]; return obj == null ? false : (bool)obj; } set { FState["KeepCurrentSelection"] = value; } }
3534行改下
if (EnableMultiSelect) { if (KeepCurrentSelection) { selectOB.AddProperty("mode", "SIMPLE"); } else { selectOB.AddProperty("mode", "MULTI"); } }
就可以了,环境是4.2.2
源码啥的都考走吧,也不截图了,没啥可玩的,就是好久不写,凑个一章算是 2015 最后一炮,大家跨年吉祥
相关文章推荐
- 先锋缓存类(极度加速ASP和提高执行效率)
- 灌水帖 asp.net非法请求时跳转到登录页面
- asp.net获取服务器信息
- ASP事务处理
- ASP.NET网站入侵第三波(fineui系统漏洞,可导致被拖库)
- Asp.Net WebAPI传递json对象、后台手动接收参数
- Asp.Net WebAPI Get提交、Post提交处理
- 详解ASP.NET页面生命周期
- 2.06StuModify.aspx(修改姓名,性别,所在班级)
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
- ASP.NET打开新窗口的多种方法
- 12.30 asp.net验证码及怎么获取里面的数值(整合)
- .NET中操作ppt等Office的控件
- Asp.net 异步调用WebService
- ASP.NET(C#)——Menu控件实现导航栏
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- 百度API用法
- asp.net文本编辑器的用法
- Raspbian安装xrdp远程
- asp.net 程序,当发生找不到文件的错误时,如何正确定位是哪个文件?