2016年3月30日星期三

infopath通过webservice动态获取数据并为表单控件赋值

1、创建webservice.



2、新建数据源。
3、配置控件的Role.

设置数据源,链接数据源,使用数据源
原文地址:MSDN


2016年3月28日星期一

infopath实现连级下拉框

1、设置次一级dropdownlist的数据源:
http://Sites/sites/Site/_vti_bin/owssvr.dll?Cmd=Display&List={98CBA8DC-CDD9-4B13-833D-16CCD2E8AD24}&XMLDATA=TRUE
2、添加Product的change事件:
public void field1_Changed(object sender, XmlEventArgs e)
        {
            // Write your code here to change the main data source.
            FileQueryConnection q = (FileQueryConnection)this.DataConnections["owssvr"];
            MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field2", NamespaceManager).SetValue("");
            q.FileLocation = "http://Sites/sites/Site/_vti_bin/owssvr.dll?Cmd=Display&List={98CBA8DC-CDD9-4B13-833D-16CCD2E8AD24}&XMLDATA=TRUE&FilterField1=Title&FilterValue1=" + e.NewValue;
            q.Execute();
        }
3、注意事项:
设置work type的数据源时不要选择在模板打开时自动收取数据
如何获得list的GUID:
设置页面的地址栏就能看到,但是需要转换编码:http://www.ifreesite.com/urldecoderencoder.htm
下载:Dropbox

2016年3月21日星期一

网页方式浏览Docear导图系统

Docear官方的很多功能都已经关闭,包括登录,上传,注册等等。。我相信作者应该在积极维护,但是看似一个可以分享导图的社区是不会短时间形成的。
docear官方的导图文件网页发布方式是java显示,为此用户必须首先更新最新java,然后只能使用IE查看,并且速度很慢。为此,我极其失望,曾经按官方方法搭建过,但是随后马上将其下线了。
此刻要推荐的方案是使用flash显示导图,当然了,flash也是使用docear导出导图时发现的。当时发现这个flash的时候极其兴奋,随后也验证了这种方案的可行性。
系统如图:



源代码:Dropbox
在做这个系统的时候,主要经历的坑是:
1.js更改embed的值的时候不成功,发现需要使用e.preventDefault();2.后台代码的书写,过滤掉非.mm文件,排除各种出错的情况,排除我自己建的.files.image等目录。

2016年3月16日星期三

infopath实现某列只能在第一次填写,此后只读

在一个表单库中有一些字段是需要唯一的,比如每个人只填写自己的表单,确定后不允许修改,哪怕重新打开也已经不能修改。这样的情况在企业环境中经常遇到,而使用的技术其实非常简单就是设置字段的Conditional formatting.
如图:
当然了,不同的控件需要设置不同的属性,disable or read-only,具体请看下图:
官方文档地址:Office Official
顺便学了个快捷键:Ctrl+Shift+b预览模板


2016年3月14日星期一

C#代码更新infopath Repeating Tables信息

Repeating Table在infopath中使用较为普遍,尤其是处理一些复杂的业务逻辑时经常表现一对多的业务需求。
但是当数据量巨大是,一条一条新增item变得不那么人性化,所以今天的选择就是使用C#代码动态的将规则的信息字符串加进repeat table 中。
其实本质上还是处理xml文件。
需要注意的是:如果单添加change事件,change后页面是没有反应的,因为没有postback,懂ASP.net的都明白。开始发了一下愁,后来发现其实infopath已经考虑了,只需要在控件的属性》Browser Forms改为always。
代码:
效果图:


源代码:Dropbox


2016年3月12日星期六

LigerUI实现左右结构layout

Demo背景:需要一个简单的左右结构框架。
使用框架:LigerUI。

源代码:Dropbox

根据服务器目录结构生成文件树

需求:因为要share server的some files,所以need 动态的生成file tree.

方案分析:当然要使用服务器端语言动态生成DOM结构,然后在前端用组件对其美化。语言可以是PHP,ASP.Net,Node.js。美化使用jQuery Treeview组件。

具体代码
服务器端:
 JS代码:
 效果图:

源代码文件:DropBox