当前位置 : 主页 > 编程语言 > java >

k/3cloud表格控件块粘贴代码逻辑

来源:互联网 收集:自由互联 发布时间:2023-03-22
大家可以在表单插件EntityBlockPasting事件中自己处理,然后将cancel设置为true。以下代码可以参考一下,插件代码中需要将其中一些属性或方法修改,例如this.BusinessInfo替换为this.View.Busin

大家可以在表单插件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; } } } }

上一篇:Java8 ConcurrentHashMap实现原理
下一篇:没有了
网友评论