Excel文档指定位置填充的时候有一些特殊的需求,比如需要Excel文档指定的位置只能填入某一类型的数据或者某几个指定的数据。例如:有用户的需求是在Excel文件的指定单元格处插入一个日期类型的文本,所以这里只能输入日期类型,输入日期类型就需要日期控件,以防止用户随便输入其他格式。为了实现这样一些特殊的需求,PageOffice开发出来了Excel单元格点击事件,点击单元格时弹出一个模态对话框,在这个对话框中可以嵌入Html页面,Html页面可以用下拉框,复选框,单选框,日期控件等元素强制用户只能输入某一类型的数据或者某几个数据,然后点击确定后将Html页面元素的值返回到该Excel单元格中。
使用描述
定义一个 JavaScript 函数响应 OnExcelCellClick 事件。
用户点击Excel文档中指定SubmitName的单元格时触发此事件。 如果您需要响应此事件,您需要在当前 JSP 页面里定义一个 JavaScript 函数。
在 JavaScript 函数里,可以通过返回值设置当前Cell的值。
下面的示例展示如何使用 JsFunction_OnExcelCellClick 属性。
poCtrl1.setJsFunction_OnExcelCellClick("OnExcelCellClick()");
然后在当前 JSP 页面里定义 OnExcelCellClick() 函数。
<script language="javascript" type="text/javascript">
function OnExcelCellClick(SheetName, SubmitName, Value, Left, Bottom) {
if (SubmitName == "ProductName") {
return "可以弹出选择对话框,返回用户选择的值。";
}
}
</script>
示例解析:
(1)Java代码:
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
... ...
Sheet sheet = workBook.openSheet("Sheet1");
//定义table对象,设置table对象的设置范围
Table table = sheet.openTable("B4:D8");
//设置table对象的提交名称,以便保存页面获取提交的数据
table.setSubmitName("Info");
// 设置响应单元格点击事件的js function
poCtrl.setJsFunction_OnExcelCellClick("OnCellClick()");
…….
poCtrl.webOpen("doc/test.xls", OpenModeType.xlsSubmitForm, "张佚名");
poCtrl.setTagId("PageOfficeCtrl1");//此行必需
(2)C#代码:
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
... ...
//定义Sheet对象,"Sheet1"是打开的Excel表单的名称
Sheet sheet = workBook.openSheet("Sheet1");
//定义table对象,设置table对象的设置范围
Table table = sheet.openTable("B4:D8");
//设置table对象的提交名称,以便保存页面获取提交的数据
table.setSubmitName("Info");
// 设置响应单元格点击事件的js function
poCtrl.setJsFunction_OnExcelCellClick("OnCellClick()");
... ...
poCtrl.webOpen("doc/test.xls", OpenModeType.xlsSubmitForm, "张佚名");
客户端的js回调函数响应该事件
- function OnCellClick(Celladdress, value, left, bottom) {
- var i = 0;
- while (i<5) {//表格第一列的5个单元格都弹出选择对话框
- if (Celladdress == "$B$" + (4 + i)) {
- var strRet = document.getElementById("PageOfficeCtrl1").ShowHtmlModalDialog("select.jsp", "", "left=" + left + "px;top=" + bottom + "px;width=320px;height=230px;frame=no;");
- if (strRet != "") {
- return (strRet);
- }
- else {
- if ((value == undefined) || (value == ""))
- return " ";
- else
- return value;
- }
- }
- i++;
- }
- }
示例截图:
注:该示例的完整代码和详细演示请参考Samples或者Samples4二、22、响应数据区域点击事件(专业版、企业版)同时结合PageOfficee开发帮助。
|