BOS小技巧
金蝶云社区-天冥异
天冥异
10人赞赏了该文章 686次浏览 未经作者许可,禁止转载编辑于2018年07月09日 14:24:22

基础资料服务端缓存强制更新


强烈建议请使用对应基础资料表单模型进行数据字段的维护,这样会自动实现基础资料缓存的更新;

不要自己写sql去修改直接数据库字段,这样会导致缓存无法更新。
如果是自己写sql或者其他逻辑去强行更新数据库字段的话。只能自己写代码去更新缓存里。
可以参考如下辅助资料清理缓存的过程:

public override void BeginOperationTransaction(BOS.Core.DynamicForm.PlugIn.Args.BeginOperationTransactionArgs e)
        {
            IBusinessDataService service = ServiceHelper.GetService<IBusinessDataService>();
            var ids = from p in e.DataEntitys select p["Id"].ToString();

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("SELECT FID from T_BAS_ASSISTANTDATAENTRY ");
            sb.AppendLine(string.Format("WHERE FEntryID in ('{0}')", string.Join("','", ids)));
            DynamicObjectCollection collections = DBUtils.ExecuteDynamicObject(this.Context, sb.ToString());

            foreach (DynamicObject obj in collections)
            {
                service.ClearCache(this.Context, AssistantData.AssistantDataType, new object[] { obj["FID"] });
            }

            ClearFactorInfor(this.Context);
            base.BeginOperationTransaction(e);
        }
具体的基础资料动态数据类型看看这样来取吧:

            var ser = ServiceHelper.GetService<IBaseDataService>();
            var ddtn = ser.GetBaseDataTypeName(this.Context, "BAS_ROLES");

            var ddt = new Kingdee.BOS.Orm.Metadata.DataEntity.DynamicObjectType(ddtn);


列分页分解 为两种模式:


列分页分解 为两种模式:
一,列分页两种模式:

1,外挂列分页控件组合模式,就是原来的方式;

2,表格设置列分页属性的内生模式;(不需要拖动增加列分页控件,仅需在表格属性里面设置就可支持,但操作部分需要业务组在指定工具栏加按钮进行配置操作)

控件部分已经实现这两种模式的兼容使用。


二,列分页算法

现象:有固顶列情况下,很容易人工算错,下面是正确的算法;
列分页算法:Celling((T-F)/(P-F)) = C(T总列数,F固定列数,P每页列数,C页数)
例如:总列数27,固定1列,每页5列如下计算
固定1列,导致可分总列数26,每页5列,固定1列,导致每页动态列4列,26列分每页4列,总共可分7页。
(27-1)/(5-1)=6.5 -> 7




三,第一种模式:
BOSIDE,拖动列分页控件,并在控件属性中【关联实体】绑定到对应单据体即可实现列分页。
固定列设置方式:选中要设置的列,在属性窗口中找到【可见性】,点开可见性窗口设置【列分页固定显示】。保存单据即可。

四,第二种模式:
1,设置单据体的属性【支持列分页】,【每页列数】。
2,增加按钮或菜单按钮,配置按钮操作【跳转列分页】操作,配置操作参数【上一页】或者【下一页】即可。


设置表格行高;(不推荐:会造成其他没有大文本的出现很多空白区域,浪费屏幕)


需要编写表单列表插件实现: this.View.GetControl<EntryGrid>("FLIST").SetRowHeight(80);

一般的用于显示单元格有较多文本的情况,建议采用Tooltips方式,参考主贴【10.设置单据体单元格的显示隐藏,掩码,Tooltip与指定Tooltip内容 】参考主贴 第10条



图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0