特别感谢Flowportal.Net公司及时快速的技术支持,在Flowportal.Net公司的马丁帮助下,终于搞定了一个在多行表单中动态显示图片的开发,在此整理下来分享给遇到此问题的朋友们。
先上一张图告诉大家要做的是什么事情。
通过上图大家应该能看出来,在这个例子中,用户可以添加多个要申请的文具,每个文具一行。在这里用户希望能够在选择文具后能把相应的图片显示在同一行。经过查看Flowportal.Net的XForm控件,并没有img类型的控件,我们可以拖入一个静态的img或者Asp.Net控件到Form上,转到源码编辑模式,手动对控件添加xdatabind、setvaluefunc、getvaluefunc的属性,同时要写出2个自定义的javascript函数。
还是说重点吧:第一xdatabind绑定到数据库的repeat line table;第二setvaluefunc是XForm控件在绑定的时候必须调用的函数,我们这里的用法是重载它;第三getvaluefunc是在赋值绑定以后在提交保存的时候获取正确的值并存到数据库,我第一次的时候没用这个函数,所有的值存到数据库都是null,造成第2个步骤的人打开表单后看不到图片。
<br/><img src="http://bpm.waiglobal.com.cn/WAI/Stationery/white.jpg" width="90" height="90" xdatabind="WAIWorkflow:FormOfficeSuppliesLine.ItemCode" setvaluefunc="MyFunc" getvaluefunc="MyFunc1" /><br/>
<br/><script type="text/javascript"><br/><br/>function MyFunc(el,value)<br/>{<br/><br/>var a = 'http://bpm.waiglobal.com.cn/WAI/Stationery/white.jpg';<br/>if (value != '')<br/>{<br/>a = 'http://bpm.waiglobal.com.cn/WAI/Stationery/'+value+'.jpg';<br/>}<br/>//alert(a);<br/><br/>el.setAttribute("src",a);<br/>el.setAttribute("itemcode",value);<br/><br/>}<br/><br/>function MyFunc1(el)<br/>{<br/>return el.getAttribute("itemcode");<br/>}<br/><br/></script><br/>