我又不用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. Java中的自动拆箱装箱(Autoboxing&Unboxing)

    一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类 ...

  2. 概率质量函数:怀孕周期的PMF

    __author__ = 'dell' import surveyimport Pmfimport matplotlib.pyplot as pyplot table = survey.Pregnan ...

  3. BZOJ 1008 越狱

    Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 In ...

  4. Door man

    poj1300:http://poj.org/problem?id=1300 题意:给你n个房间,房间之间有一些门,房间是按0~~n-进行编号的.然后给出一些房间的之间门,n行,每行的数字表示该们与其 ...

  5. Inno Setup安装时不能关闭指定进程

    脚本由 Inno Setup 脚本向导 生成!; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "XX管理系统"#defi ...

  6. Unity NGUI实现按钮点击播放Aniamtion

    unity版本:4.5 NGUI版本:3.6.5 参考链接:http://www.colabug.com/thread-1029974-1-1.html,作者:COLABUG.COM 橘虞 1.怎么创 ...

  7. C++中的 new / delete

    new的3种形态: new operator , operator new , placement new 1.new operator: new操作符,像 + - * / && . ...

  8. AlgorithmsI PA2: Randomized Queues and Deques Deque

    本次作业考察利用array 或者linked list 实现规定时间复杂度的queue 和stack, 不能使用java 自带的stack 和queue. 目的是让我们掌握自己设计的函数的复杂度. D ...

  9. AlgorithmsI Exercises: UnionFind

    Question1 Give the id[] array that results from the following sequence of 6 unionoperations on a set ...

  10. 开源的asp.net工作流程引擎。 http://ccflow.org

    开源的asp.net工作流程引擎. http://ccflow.org