ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## **数据区域点击事件** >[info]**需求背景:** Word文档指定位置填充的时候有一些特殊的需求需要word文档指定的位置只能填入某一类型的数据或者某几个数据.例如:有用户的需求是在word文件的某一区域插入一个日期,但是这里必须用到日期控件.为了实现这样一些特殊的需求,PageOffice开发出来了数据区域点击事件,点击时响应弹出一个模态或者非模态对话框,在这个对话框中用户可以嵌入html页面,获取html页面控件的数据来返回到文档指定的位置. > 用户点击数据区域触发该事件,用一个回调函数响应该事件弹出一个模态对话框,让用户在对话框中编辑数据,从而实现禁止用户直接编辑数据区域内容的效果。 ### **代码实现:** Java代码: ~~~ PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); WordDocument doc = new WordDocument(); DataRegion dataReg = doc.openDataRegion("PO_deptName"); //核心代码, 用户点击Word文档中的预定义的数据区域(DataRegion)时触发此事件。 //如果您需要响应此事件,您需要在当前 JSP 页面里定义一个 JavaScript 函数。 poCtrl.setJsFunction_OnWordDataRegionClick("OnWordDataRegionClick()"); …… poCtrl.setWriter(doc); poCtrl.webOpen("doc/test.doc", OpenModeType.docSubmitForm, "张三"); ~~~ ASP.NET代码: ~~~ WordDocument doc = new WordDocument(); DataRegion dataReg = doc.OpenDataRegion("PO_deptName"); //核心代码, 用户点击Word文档中的预定义的数据区域(DataRegion)时触发此事件。 //如果您需要响应此事件,您需要在当前 html 页面里定义一个 JavaScript 函数。 PageOfficeCtrl1.JsFunction_OnWordDataRegionClick = "OnWordDataRegionClick()"; …… PageOfficeCtrl1.SetWriter(doc); PageOfficeCtrl1.WebOpen("doc/test.doc", PageOffice.OpenModeType.docSubmitForm, "张三"); ~~~ ### **客户端的js回调函数响应该事件:** ~~~ function OnWordDataRegionClick(Name, Value, Left, Bottom) { if (Name == "PO_deptName") { // selectDept.htm为要弹出的显示部门列表的页面URL, // ShowHtmlModalDialog 显示一个HTML内容的模态对话框. var strRe = document.getElementById("PageOfficeCtrl1").ShowHtmlModalDialog("selectDept.htm", Value, "left=" + Left + "px;top=" + Bottom + "px;width=400px;height=300px;frame=no;"); if (strRet != "") { return (strRet); } else { if ((Value == undefined) || (Value == "")) return " "; else return Value; } } } ~~~ ### **示例效果截图:** ![10.1](https://box.kancloud.cn/561ed9ab9c61f6de84d605745468e4b3_900x584.png) > 详细请参考PageOffice产品开发包中Samples4示例: > 二、22、响应数据区域点击事件(专业版、企业版)