在某些情况下,业务需求需要实现不同的用户登录系统,打开同一个文件(不必同时打开),可以编辑的区域不一样,每个人都有属于自己的编辑区域。
解决思路:
利用PageOffice可以实现这样的效果。PageOffice有一个功能就是操作数据区域,不但可以给文件中的数据区域(“PO_”开头的书签)赋值,还可以设置只读模式打开文件的时候哪些数据区域为可编辑模式。在打开文件之前先获取当前登录用户的权限,然后根据这个用户的权限来设置这个用户打开文件之后,哪些数据区域是可以编辑的。
实现方式:
WordDocument doc = new WordDocument();
DataRegion dr1 = doc.openDataRegion("PO_xx");
dr1.Value = "张三"; //这句代码不是必须的
dr1.Editing = true; //允许这个数据区域编辑
DataRegion dr2 = doc.openDataRegion("PO_yy");
dr2.Value = docCause;
dr2.Editing = false; //禁止这个数据区域编辑
……
poCtrl1.webOpen("doc/template.doc",OpenModeType.docSubmitForm, "张三");
用提交模式打开文件,这样文件是只读的,只有设置了Editing=true的数据区域可以编辑。
PageOffice中的概念“数据区域 (DataRegion)”:在PageOffice的概念里“PO_”开头的书签被称为数据区域(DataRegion),用“PO_”开头来命名书签只是为了防止和用户自己的书签有冲突。
DataRegion属性中的其中两个属性是:
- Value: 给数据区域赋值,举例:比方说word文件中有一个书签为:PO_Name,那么使用WordResponse对象给这个书签赋值:
OpenDataRegion("PO_Name").Value = "XXX";
- Editing: 设置这个数据区域是不是可以编辑。设置文件打开后书签PO_Name所在的位置可编辑:
OpenDataRegion("PO_Name").Editing = true;
这个Editing属性是这次使用的重点,实现不同的人编辑word文档中不同的编辑区域的关键是利用word中的书签去标记编辑区域(数据区域),然后用数据区域的Editing属性去控制这个区域是不是可以编辑。