BOS小技巧
10人赞赏了该文章
701次浏览
编辑于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人打赏
还没有人打赏,快来当第一个打赏的人吧!