InfoPath 2007中如何用js动态生成重复表中的行

 我来答
许柏寿
2013-11-26 · TA获得超过110个赞
知道小有建树答主
回答量:141
采纳率:66%
帮助的人:60万
展开全部
在本系统中,my:DayAttendance中包含了重复结点my:DayAttendance,也就是说我要添加一行就必须想办法添加一个my:AttendanceItem结点。js中使用的是MSXML,要添加结点就得用XmlNode.insertBefore方法,InsertBefore有两个参数第一个是被添加的结点,而第二个参数是参考结点。但要注意,没有insertAfter,所以没有办法直接差到某个结点后面,如果要这么做得用算法解决。 提示:my是InfoPath的默认命名空间,InfoPath会自动声明该命名空间。varparent=XDocument.DOM.selectSingleNode("/my:WorkAttendanceCard/my:Attendance/my:DayAttendance");//getfirstrowvarrowOne=parent.selectSingleNode(" ./my:AttendanceItem");for(i=1;i<days;i++){//clonethefirstrowvarrowClone=rowOne.cloneNode(true);//appendrowtoXMLdocument parent.insertBefore(rowClone,rowOne);}其实代码并不复杂,首先我必须拿到重复表的父节点,即my:DayAttendance,保存在parent中;然后对第一行做cloneNode操作,保存到rowClone中,当然克隆完成之后,你可以为rowClone加入适当的内容,最后用insertBefore把rowClone 添加到rowOne之前。 似乎代码已经可以用了,但如果你自己做一遍的话会发现一个问题,如果在OnLoad中调用的此段代码每次InfoPath表运行都会生成n行,如果人家已经填好数据了,就会莫名其妙多出来n-1行。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式