我又不用FineUI开发,所以FineUI项目经验等于0,最近在忙别的,所以也没工夫研究。积累了论坛和群里的问题,写下来留个备份

1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现
解决办法,利用了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('|') > )
{
_funname = eventArgument.Split('|')[];
string[] s = eventArgument.Split('|')[].Split('$');
for (int i = ; i < s.Length; i++)
{
_evelist.Add(s[i]);
}
}
}
}
没必要向我这么写,只是给了灵感吧
3.也是在论坛上看见的,我新想最起码攒三个在写博客,今天就看见了,查了查,封个方法就可以了
请问FineUI开源版中如何实现Grid保持行选中状态?就好像专业版中的 KeepCurrentSelection ,例子在这里 http://fineui.com/demo_pro/#/dem ... rrentselection.aspx。感觉这个很有用,现在开原版多选行只能按住Ctrl键实现点击每一行的任意位置多选,而且很容易误操作。
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.NET-FineUI开发实践-17的更多相关文章

  1. FineUI开源版(ASP.Net)开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  2. FineUI开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  3. FineUI开发实践

    ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...

  4. ASP.NET-FineUI开发实践-11

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

  5. ASP.NET-FineUI开发实践-9(四)

    现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的. 1. ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询

    上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

随机推荐

  1. Spring Data JPA 多个实体类表联合视图查询

    Spring Data JPA 查询数据库时,如果两个表有关联,那么就设个外键,在查询的时候用Specification创建Join 查询便可.但是只支持左连接,不支持右连接,虽说左右连接反过来就能实 ...

  2. you don't have permission 错误

    当引入第三方的框架的时候 容易产生以下问题: The file “XXX.app” couldn’t be opened because you don’t have permission to vi ...

  3. 转:理解 PHP 中的 Streams

    本文转自:开源中国社区 [http://www.oschina.net]本文标题:理解 PHP 中的 Streams 本文地址:http://www.oschina.net/translate/und ...

  4. C++例题2:汉诺塔问题

    #include<iostream>#include<stdlib.h>using namespace std;void Hanoi(int n,char A,char B,c ...

  5. oracle timestamp的转换

    select to_char(stime,'yyyy-mm-dd HH24:MI:ss.ff3') from e_bmp_log_operation t where t.sdetail like '% ...

  6. 转一篇NGINX+UWSGI+PYTHON+DJANGO部署文档

    高远弄的,,专业,明晓..感谢哈哈. http://blog.csdn.net/tmpbook/article/details/42873667

  7. AsyncCalls – Asynchronous function calls

    AsyncCalls – Asynchronous function callsWith AsyncCalls you can execute multiple functions at the sa ...

  8. Sumdiv(各种数学)

    http://poj.org/problem?id=1845 题意:求A^B的所有约数的和再对9901取模: 做了这个学到了N多数学知识: 一:任意一个整数都可以唯一分解成素因子的乘积:A = p1^ ...

  9. Win7下IE8无法打开https类型的网站解决方法笔记

      现象: 一台笔记本(XP系统),一台台式机(Win7,64位系统),都是IE8,之前没任何问题,访问https也没异常,都能正常访问; 前天突然发现登录火车票网站出现无法打开登录页面情况,后来换其 ...

  10. 【C#】详解使用Enumerable.Distinct方法去重

    Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定义去重的规则. 有两个重载方法 ...