大家可以在表单插件EntityBlockPasting事件中自己处理,然后将cancel设置为true。以下代码可以参考一下,插件代码中需要将其中一些属性或方法修改,例如this.BusinessInfo替换为this.View.BusinessInfo,UpdateValue替换为this.View.Model.SetValue,this.StyleManager替换为((IDynamicFormView)this.View).StyleManager

        /// <summary>
/// 块拷贝
/// </summary>
/// <param name="startKey"></param>
/// <param name="startRow"></param>
/// <param name="blockValue"></param>
public void EntityBlockPasting(string startKey, int startRow, string blockValue)
{
if (!blockValue.IsNullOrEmptyOrWhiteSpace())
{
EntityBlockPastingEventArgs args = new EntityBlockPastingEventArgs(startKey, startRow, blockValue);
this.EventsProxy.FireEntityBlockPasting(args);
if (args.Cancel)
{
return;
}
Field fd = this.BusinessInfo.GetField(startKey);
if (fd == null) return;
int entityRowCount = this.Model.GetEntryRowCount(fd.EntityKey);
string[] rowValues = blockValue.Split('\n');
int blockRowCount = rowValues.Length-1;
if (blockRowCount > entityRowCount)
{
// 当前实体行数不足,补齐行数据
for (int i = entityRowCount; i < blockRowCount; i++)
{
this.Model.CreateNewEntryRow(fd.EntityKey);
}
}
Dictionary<int, string> fieldKeyList = new Dictionary<int, string>();
int row = startRow;
foreach (string strValue in rowValues)
{
if (strValue.IsNullOrEmpty())
{
// 最后空行结束
return;
}
string[] strs = strValue.Split('\t');
int fieldCount = strs.Length;
SetFieldKeyList(startKey, fd, fieldKeyList);
if (fieldKeyList.Count == 0)
{
// 可能找不到列,则返回
return;
}
int index = 0;
foreach (string str in strs)
{
string key = fieldKeyList[index];
// 未锁定状态下更新数据,锁定跳过
if (this.StyleManager.GetEnabled(this.LayoutInfo.GetFieldAppearance(key)))
{
this.UpdateValue(fieldKeyList[index], row, str);
}
index++;
}
row++;
}
}
}
private void SetFieldKeyList(string startKey, Field fd, Dictionary<int, string> fieldKeyList)
{
if (fieldKeyList.Count > 0)
{
return;
}
int start = 0;
List<Field> fields = new List<Field>();
fields.AddRange(fd.Entity.Fields);
fields.Sort(new Comparison<Field>((x, y) =>
{
return x.Tabindex.CompareTo(y.Tabindex);
}));
foreach (Field f in fields)
{
if (startKey.EqualsIgnoreCase(f.Key))
{
fieldKeyList[start++] = f.Key;
continue;
}
if (start > 0)
{
// 可见的列才被用来粘贴
if (this.StyleManager.GetVisible(this.LayoutInfo.GetFieldAppearance(f.Key)))
{
fieldKeyList[start++] = f.Key;
continue;
}
}
}
}

k/3cloud表格控件块粘贴代码逻辑的更多相关文章

  1. SNF快速开发平台MVC-EasyUI3.9之-DataGrid表格控件如何增加右键菜单

    如题,我们在项目开发当中会遇到需要,表格控件增加右键菜单的使用. 下面我们就以SNF框架增加右键菜单步骤如下: 1.在加载页面当中增加如下菜单定义 <div id="mm" ...

  2. 详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入

    我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓.而FarPoint是一款模拟EXCEL的控件.它可以根据用户的要求实现很大 ...

  3. QRowTable表格控件-支持hover整行、checked整行、指定列排序等

    目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...

  4. QTableView表格控件区域选择-自绘选择区域

    目录 一.开心一刻 二.概述 三.效果展示 四.实现思路 1.绘制区域 2.绘制边框 3.绘制 五.相关文章 原文链接:QTableView表格控件区域选择-自绘选择区域 一.开心一刻 陪完客户回到家 ...

  5. QRowTable表格控件(四)-效率优化之-优化数据源

    目录 一.开心一刻 二.问题分析 三.重写数据源 1.自己存储数据 2.重写data接口 四.比较 五.相关文章 原文链接:QRowTable表格控件(四)-效率优化之-优化数据源 一.开心一刻 一程 ...

  6. 纯前端表格控件SpreadJS V12.1 隆重登场,专注易用性,提升用户体验

    ​ 一款优秀的开发工具,在更新迭代中,除了要满足不同场景的业务需求,也需不断优化已有功能,尤其是细节方面,要能为用户带来使用体验和开发效率的提升. 作为一款备受业界专家和开发者认可的纯前端类Excel ...

  7. 如何在web中实现类似excel的表格控件

    Execl功能非常强大,内置的很多函数或公式可以大大提高对数据的加工处理能力.那么在web中有没有类似的控件呢?经过一番搜寻,发现handsontable具备了基本的excel功能支持公式,同时能对数 ...

  8. 最好的Angular2表格控件

    现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求 ...

  9. Android入门之GridView(表格控件)

    GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串.在这里我们要实现一个图标下方有文字的效果. 1.首先我们应自定义布局文件image_text.xml.代码如下: &l ...

随机推荐

  1. SQL系列函数——字符串函数

    1.charindex函数用来寻找一个指定的字符(串)在另一个字符串中的起始位置,返回一个整数,没找到就返回0. select CHARINDEX('SQL','Microsoft SQL SERVE ...

  2. vue中引入字体图标报错,找不到字体文件

    在用vue + webpack进行开发的时候,在引用字体图标遇到字体无法加载的问题: 报以下错误 搞了好久没搞定,最后才找到解决方法(还是没有找到原因) 修改字体图标的css中引入字体文件的路径 以前 ...

  3. Ant题解

    Description: 一根长度为L厘米的木棒上有N只蚂蚁,每只蚂蚁要么向左走,要么向右走,速度为1厘米/秒.当两只蚂蚁相撞时,他们会同时掉头(掉头时间不计)给出每只蚂蚁距离木棒左端的距离,问多少秒 ...

  4. Nagios的服务器监控

    第一部分是主机外监控,比如:主机是否存活,WEB服务是否正常,MySQL服务是否正常等内容,再主机外通过访问其端口即可得知.这些监控命令再安装nagios-plugins-1.4.13.tar.gz时 ...

  5. ASP.NET MVC IIS7 403.14-Forbidden

    问题描述 IIS 7上发布ASP.NET MVC程序报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保 ...

  6. 使用JavaScript给对象修改注册监听器

    我们在开发一些大型前端项目时,会遇到这样一种情况,某个变量上有个字段.我们想知道是哪一段程序修改了这个变量上的字段.比如全局变量window上我们自定义了一个新字段_name,我们想知道到底有哪些程序 ...

  7. springBoot + KISSO实现单点登录

    1:创建一个maven项目 kisso,然后再创建二个子项目都是springboot 2:二个boot项目的pom.xml都是一样的 就这三个依赖,3:接下来就是码代码了,首先在(在我这里)sprin ...

  8. 前端基础入门第一阶段-Web前端开发基础环境配置

    Web前端和全栈的定义: A.什么是传统传统web前端:需要把设计师的设计稿,切完图,写标签和样式,实现JS的效果,简而言之即只需要掌握HTML的页面结构,CSS的页面样式,javaScript页面的 ...

  9. Ioc 之 Unity的AOP功能

    前面我们介绍了Unity的依赖注入功能,现在来介绍下Unity的AOP功能.AOP是面向切面编程,它能够使我们在不改变现有代码结构的情况下额外的为其添加一些功能. 我们还是使用配置文件来对类型进行注入 ...

  10. MFC限制窗口大小

    MFC限制窗口大小 使用:WM_GETMINMAXINFO message void OnGetMinMaxInfo(MINMAXINFO* lpMMI) { lpMMI->ptMinTrack ...