设为首页 收藏本站
查看: 1174|回复: 0

[经验分享] InfoPath进阶之二:给InfoPath添加VSTA托管代码并从SharePoint列表查询数据

[复制链接]

尚未签到

发表于 2015-9-27 12:55:22 | 显示全部楼层 |阅读模式
  摘要:本章节里,我们要学习如何给InfoPath添加代码,然后如何把含有代码的表单模板发布到具有Forms Service的网站上去。本代码比较简单:根据上一章的示例,模板里有一个字段叫“申请人”,这段代码就是根据当前登录的人名,通过代码查询到他的部门,然后自动地填到“申请部门”这个下拉框中去。这样当使用者第一次新建这个表单时,申请人和部门就会自动填好,这样就会显得模板比较智能。
  你将学会:


  • 如何给InfoPath模板添加代码,并进行发布。
  • 如何从MOSS的用户配置文件中来读取用户的中文名称
  • 如何使用OM和Query语句,对SharePoint列表进行查询
  • 如何在程序中设置表单中某个节点(域)的值
  • 如何应用Loading事件
  
  一、新建一个表单库,用来存放表单
  如下图:
DSC0000.png
  
  二、编辑表单模板,并加入程序
  1 以设计模式打开模板,在“工具”-“表单选项”中设置编程语言为c#,如下图:
DSC0001.png
  
  2.设置表单模板的安全级别为“完全信任”和表单模板签名,如下图:
DSC0002.png
  3. 在通过菜单中的Loading事件,打开编写程序的界面:
DSC0003.png
  
  4.给程序添加3个必要的“引用”,如图下图,打开“添加引用”对话框,
DSC0004.png
  1)给程序集添加WSS的引用,主要使用OM对象模型,如下图:
DSC0005.png
  2)给程序集添加Office Server的引用,主要使用配置文件类,如下图:
DSC0006.png
  3) 参照之前的例子,再给程序加上System.Web的引用,主要用来使用ServerContext对象。
  
  5 给程序加上代码
  1) 给程序加上引用行,如下示例:


//以下需要手动加上去的
using System.Web;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
  
  
  
  
  
  
  
  
  2) 在Loading事件中加入如下的代码:


            if (this.New) //如果是新的表单,就设置初始值
{
//取得当前用户在配置文件中FullName的值
using (SPSite site = new SPSite("http://oss")) //请把这个值换成你的SharePoint网站的URL
{
//以下根据当前用户登录名来取得用户的配置文件
ServerContext context = ServerContext.GetContext(site);
UserProfileManager profileManager = new UserProfileManager(context);            
UserProfile u = profileManager.GetUserProfile(this.Application.User.LoginName);
string fullName = u[PropertyConstants.PreferredName].Value.ToString();
XPathNavigator mainNavigator = this.MainDataSource.CreateNavigator();   //取得主数据源的检索游标
//设置申请人的节点值为用户名,即配置文件中PreferredName(名称)的属性                  
mainNavigator.SelectSingleNode("/my:myFields/my:申请人", this.NamespaceManager).SetValue(fullName);  
//根据姓名从SharePoint的部门列表来查询部门
using (SPWeb web = site.AllWebs["/demo"]) //请把这个换成你的SharePoint网站的URL
{
SPQuery query = new SPQuery();
//因为姓名字段,是从标题更改而来的,所以其内部名称为Title
query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + fullName + "</Value></Eq></Where>";
SPList list = web.Lists["部门人员"];
SPListItemCollection items = list.GetItems(query);
if (items.Count > 0) //如果查找到了就设置部门的值
mainNavigator.SelectSingleNode("/my:myFields/my:申请部门", this.NamespaceManager).SetValue(items[0]["部门"].ToString ());  
}
}
}
}    6 调试看结果
  请按 DSC0007.png 可以看看调试结果,如下图:
DSC0008.png
  
  三、 部署模板到文档库
  程序都调试好了,应该部署到文档库中,如何部署呢?
  1. 启动文件菜单中的发布向导,把模板发布到C:盘的根文件夹下,如下图:
DSC0009.png
  
DSC00010.png
DSC00011.png
DSC00012.png
DSC00013.png
  
  2 把刚才发布的模板上传到管理中心,并激活到网站集
  进入管理中心,的&#8220;应用程序管理&#8221;页面,如下图点击进入上传页面:
DSC00014.png
  
DSC00015.png
  
  点击上传后,再点击确定,进入模板的列表页面,如下图把这个模板激活到网站集:
DSC00016.png
  在配置页面里,如下图配置好使用这个模板的网站集:
DSC00017.png
  3 设置文档库
  1)首先打开第一步创建的&#8220;采购申请&#8221;文档库的高级设置,打开内容类型管理,并配置为网页显示这个表单库如下图:
DSC00018.png
  
  2)如下图添加&#8220;采购申请单&#8221;内容类型:
DSC00019.png
  
  如下图把采购申请单添加进入右边
DSC00020.png
  结果如图:
  
DSC00021.png
  
  
  
  
  
  
  
  
  
  
  
  
  3)把这个内容类型设置为唯一模板,并把原有的表单模板删除掉,
  点击&#8220;更改&#8217;新建&#8217;按钮的顺序和默认内容类型&#8221;,
DSC00022.png
  
  把采购申请单,设置为第1内容类型,如下图:
  
DSC00023.png
  点击进入表单内容类型的设置界面,点击删除:
DSC00024.png
  
  四、测试结果
  如下图,点击新建
DSC00025.png
  
  结果如下图,一切正常:
DSC00026.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119503-1-1.html 上篇帖子: Microsoft SharePoint Portal Server 2003 订制开发研讨(流水帐) 下篇帖子: Sharepoint学习笔记--Access Request--找不到Access Request(要求存取)?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表